-
Число публикаций
1 629 -
Регистрация
-
Последнее посещение
-
Дней в топе
27 -
AMKoin
15,160 [Подарить AMKoin]
Весь контент пользователя Kirgudu
-
В погоне за восстановлением всего и вся не забывайте, что ЧН - другая игра, действие которой происходит до событий ТЧ и "большого" выброса, перекроившего ЗО. Почему бы в ЧН и не отсутствовать некоторым аномалиям и артефактам, появившимся позже? Вообще, я искренне не понимаю это ваше стремление сделать клона ТЧ, но с другим сюжетом. Зачем? Вот зачем? Просто «чтобы было»? Хорошо, что @monk далеко не на все ваши «хотелки» соглашается.
- 4 593 ответа
-
- 10
-
@reveroman, только тот техник, которому отдал флешки. По крайней мере так в OGSM было; разве только @monk изменил схему.
-
Потому что в news_manager.send_tip() используется альтернативный метод вывода сообщения: db.actor:give_game_news("Свободу тушканам!", "Тушканчики всех стран, объединяйтесь!", "ui\\ui_npc_monster", 0, 50000) В этом варианте не указываются координаты и размеры вырезаемого из текстуры изображения. Возможно, в этом и причина неработоспособности первого варианта, если вырезаемый прямоугольник не совпадает с текстурой.
-
Точно sactor.id? Строчкой раньше определяется переменная actor. Это первое.А второе - зачем такие мучения? Не проще ли сделать так? db.actor:give_game_news("Свободу тушканам!\\nТушканчики всех стран, объединяйтесь!","ui\\ui_npc_monster",Frect():set(0,215,163,105),1000,50000) @Serge!, это при условии, что там всегда 0. А также что позиция чтения установлена с начала пакета (см. выше).
-
@alex4321, ещё раз: Поэтому local packet = net_packet() local new_game = packet:r_u8() вернёт что? Мне неизвестно - не пробовал получать значение из нового net-пакета.
-
Эти файлы необходимы только для (попытки) решения одного вопроса с Ашотом. Если этот вопрос не беспокоит - можно не применять.
-
В зависимости от специфики и размера сохраняемых данных - пстор, обсуждавшиеся тут универсальные хранилища, нет-пакет конкретного объекта и т. д. Вариантов хватает. По целям надо и средства выбирать.
-
И не будет никакого сообщения при таком коде. local packet = net_packet() local new_game = packet:r_u8() != 1 Во-первых, как справедливо заметил @naxac, неравенство должно обозначаться «~=». А во-вторых, чтобы пользоваться net-пакетами, надо для начала хотя бы изучить что они такое и с чем их едят. Начать можно с азов в теме «Справочник по функциям и классам», да и в целом на форуме информации предостаточно. Даже тут, на предыдущей странице, было обсуждение, которое могло бы навести на некоторые мысли. В частности, вызов конструктора local packet = net_packet() возвращает новый, чистый (!) net-пакет. Всегда. И пытаться получить из него признак запуска игры - бессмысленно. Вообще, использовать net-пакеты для сохранения признака того, что игра уже запускалась - это палить из пушки по воробьям. Один вопрос: зачем? Для этого лучше сохранить переменную в pstor; как это сделать - писалось много раз, в том числе на предыдущей странице.
-
Специально оставил вышестоящий пост, хотя первоначально не хотел это делать. Так вот, позволю себе напомнить, что тема называется «Скриптование». Средневзвешенный скриптёр, не желающий или не могущий лезть в другие области, такие как редактирование движка и проч., оперирует теми инструментами, которые ему предоставлены, а это, как ни крути, нет-пакеты, их ограничения, недостаток доступных пространств и методов и т. д. Конечно, можно растечься мыслями по древу сколь угодно широко, однако это категорически выходит за рамки темы. И в данном случае конкретная проблема именно решена или, по крайней мере, обнаружен (возможно, повторно) нюанс, её решающий. Дальнейшее педалирование этого вопроса буду считать оффтопом и флудом, со всеми вытекающими. Если есть что сказать по существу, то есть касаемо именно скриптования - пожалуйста. А если нет - тогда путь лежит в «Курилку программистов» или «ещё более другую тему» ((с) DC). P.S. Оба поста под снос через какое-то время.
-
[SoC] Ковыряемся в файлах
Kirgudu ответил на тему форума автора Halford в Скрипты / конфиги / движок
Исчерпывающий ответ уже дал @UnLoaded в этом посте. -
Проблема нами с автором вопроса решена, исправленный модуль se_stor выложен в теме «Сборочный цех». Что касается обещанных мной подробностей. Как известно, при создании нового net-пакета в ЗП и ЧН позиция записи может не быть автоматически установлена на начало, и чтобы запись в пакет происходила как положено, позиция записи должна быть изменена принудительно методом packet:w_begin(0). Об этом уже неоднократно писалось, например здесь. Однако было обойдено вниманием (или, по крайней мере, я не нашёл на форуме соответствующей информации) то, что для «чистого» net-пакета может не быть нулём также и позиция чтения. При этом packet:r_tell() для этого пакета возвращает, например, 263. Такая ситуация встречается как минимум в ЗП, вероятно и в ЧН тоже. @Artos не учёл это в модуле se_stor, либо просто забыл исправить, что и привело к вышеописанным вылетам. Теперь данной ошибки модуль лишён. А решение простое - после создания нового net-пакета следует принудительно выставлять как позицию записи, так и позицию чтения: local packet = net_packet() packet:w_begin(0) --/ установка позиции записи в начало net-пакета (+2 технологических байта) packet:r_seek(0) --/ установка позиции чтения с начала net-пакета @Max_Raf, указанным тобой способом данные сохраняются в pstor игрока, а значит имеют ограниченный общий объём, не превышающий размера net-пакета для соотв. платформы (около 8 КБ для ТЧ и 16 КБ для ЧН/ЗП). «Войну и мир» ты в них не запихнёшь, так как переполнение гарантированно приведёт к порче сохранений. Если есть необходимость сохранять что угодно и сколько угодно, лучше посмотреть в сторону так называемых универсальных хранилищ. Что это такое - неоднократно тут объяснялось и обсуждалось, с примерами, инструкциями и т. п. Информацию легко найти; достаточно сделать поиск по форуму или, для начала, заглянуть в тему «Сборочный цех».
-
Обнаружена и исправлена критическая ошибка в модуле универсального хранилища se_stor, приводившая к периодической невозможности сохранить в чанках данные всех подключённых внешних модулей. Ссылки те же (обновлены комплект se_stor и общий комплект). За помощь в тестировании спасибо @Romz.
-
@Romz, возьми эти скрипты: http://rghost.ru/6YQt5Cl2X Я взял их из последнего фикса твоего мода (то есть в твоём случае доработки напильником не требуется), поправил и дополнил вывод в лог. Надо снять лог от диалога с проводником до вылета. Дальше посмотрим по результатам. Думаю, имеет смысл переместиться с дальнейшим обсуждением в личку, пока не появится интересных общественности результатов.
-
npc:goodwill(db.actor) -- результат - число npc:relation(db.actor) -- результат - одно из значений game_object.enemy | game_object.neutral | game_object.friend Примеры использования можно найти в оригинальных скриптах игры. Вообще, поиск по файлам с помощью, например, TC, может дать много интересной и полезной информации.
-
if relation_registry.community_goodwill("stalker", db.actor:id()) > 2000 then -- действие end
-
Оффтоп. @Outfater, в 2.1.4 нет прямого запрета писать на другом языке, только рекомендация. Понятно, что форум русскоязычный, и крайне желательно писать по-русски. Мы даже рекомендуем пользоваться онлайн-переводчиками, чтобы пост был понятен максимальному числу читателей. Но вот в чём беда: @kahului - француз (или, по крайней мере, франкоговорящий человек), и автоматический перевод именно с французского на русский (не говоря уж о трёхступенчатом переводе фр.-англ.-рус.) даёт настолько нечитаемый результат, что 2 его поста выше покажутся цветочками по сравнению с ним. Проходили некоторое время назад, знаем. Поэтому была дана рекомендация писать по-английски. Так что давайте отнесёмся к данной ситуации как к исключению. Если это так уж необходимо - я лично могу перевести 2 вышестоящих поста на русский и опубликовать здесь перевод.
-
@ed_rez, в точку! И как я сам не догадался? Стоило буквально на одну восьмую витка резьбы сместить вправо нижний край створки (то есть поднять правый край) - справа практически перестало дуть. Осталось найти баланс по осям... наверное, буду не наклон менять, а подъём, чтобы прижим улучшился со всех сторон. Впрочем, это уже детали. Ещё раз спасибо!
-
Продолжение моего вопроса про регулировку окна. Регулировку в плоскости, совпадающей с плоскостью окна, я нашёл. С этого ракурса не видно, но паз под шестигранник есть справа в нижней части - это сдвиг, я так понял, вправо-влево. Зубчатое колёсико - это, видимо, вверх-вниз (гнездо под ключ не нашёл, может саму зубчатку надо вращать). Но это всё мне, как оказалось, не нужно. Если помните, жаловался я на плохой прижим окна в полностью закрытом состоянии, не говоря уж о режиме проветривания. Так вот, прижимные язычки у этого окна, как оказалось, круглые, и простым их поворотом большего усилия не добиться. Вот фото механизма:
-
[SoC] Ковыряемся в файлах
Kirgudu ответил на тему форума автора Halford в Скрипты / конфиги / движок
По-хорошему, ответить на вопрос должен был бы кто-нибудь из знатоков NLC, но что поделать. sak_off_corpses - это полностью самостоятельный уборщик, который надо вызвать один раз при каждой загрузке. Соответственно, на наличие/отсутствие каких-либо специфических строк обращать внимание не нужно, инструкция в этом плане некорректна. Достаточно поместить строку sak_off_corpses.off_corpses() например, в самом конце функции actor_binder:net_spawn(data) оригинального модуля bind_stalker.script, перед закрывающим end. -
@Zander_driver, судя по всему, ты пользуешься старым m_net_utils. upd.quaternion в m_net_utils --> upd.ph_rotation в m_netpk. Помимо названия, в m_netpk существенно изменился сам способ чтения/записи данных, в том числе этого свойства. Я полагаю, что в новой версии модуля твоей ошибки уже не будет. Если это так, а старая версия модуля интегрирована в слишком многие скрипты, тебе даже не обязательно повсеместно переходить на новую. Судя по инициализации там и там, обе версии вполне уживутся рядом друг с другом.
-
@Romz, ну тогда сам смотри, с какого конца подходить. Если тебе проще оперировать секундами - используй свою функцию, в оптимизированном или нет виде. Либо, если делать через CTime, у тебя уже есть время последнего выброса (self.last_surge_time)), а время до следующего можно получить так (при учёте того, что self._delta - в минутах): local delta_ctime = game.CTime() delta_ctime:setHMS(0,self._delta,0) И тогда, вернув оба объекта, можно воспользоваться функцией, которую привёл @abramcumner. Только потом не забудь перевести его результат delta (который тоже CTime) в часы и минуты: return delta:timeToString(game.CTime.TimeToMinutes) И получишь сразу строку вида "hh:mm".
-
@abramcumner, можно я отвечу? @Romz, где ты такое увидел? Сначала сложением вычисляется время следующего выброса (двух), потом разница между ними и текущим временем (next_surge:diffSec(now)), потом берётся минимальная разница. Она и возвращается, как оставшееся время до ближайшего выброса.
-
Возвращает целую и дробную части, но уже после деления на 3600, то есть и то и другое - в часах. Поэтому для получения минут дробную часть надо умножать на 60. Тогда бери мой пример. Вариант @abramcumner относится к CTime.
-
@abramcumner, вот кстати да. Но и в твоём примере не всё гладко. Если get_last_surge_time возвращает объект CTime, а get_delta - секунды, то...
-
@Romz, я правильно понимаю, что здесь ты вычисляешь время, оставшееся до ближайшего из двух типов выброса? В целом нормально, но оптимизировать есть куда. Например: function dream_calculation() local delta_su = surge_manager.get_delta() - surge_manager.get_last_surge_time() local delta_ps = psi_storm_manager.get_delta() - psi_storm_manager.get_last_psi_storm_time() local delta_h, delta_m = math.modf(math.min(delta_ps, delta_su)/3600) delta_m = math.floor(delta_m*60) return delta_h, delta_m endНу и отсюда очевидно, что лучше не дёргать 2 раза подряд один и тот же менеджер, а вычислять соотв. дельту прямо в нём, в дополнительной функции, передавая наружу уже результат.
УЧИМСЯ МОДДИНГУ
ИГРАЕМ В МОДЫ НА ТЧ
ИГРАЕМ В МОДЫ НА ЧН И ЗП
- [ЧН] OGSM CS 1.8 CE Fixes
- [ЧН] HARDWARMOD 3.2
- [ЗП] The Long Road
- [ЧН] New vision of War
- [ЧН] Old Good Stalker Mod - Clear Sky
- [ЗП] Unofficial Patch
- [ЗП] Смерти вопреки
- [ЗП] Контракт на хорошую жизнь
- [ЗП] Shoker Weapon Mod 2.1
- [ЗП] Hardcore pack for SGM 2.2
- [ЗП] Контракт Синдиката
- [ЗП] Клондайк 2.0
- ...и другие моды
ПОЛЕЗНОЕ И РАЗНОЕ