-
Число публикаций
1 629 -
Регистрация
-
Последнее посещение
-
Дней в топе
27 -
AMKoin
15,160 [Подарить AMKoin]
Весь контент пользователя Kirgudu
-
@ed_rez, да это понятно. Прогресс не стоит на месте и, может быть, пора уже и нам двигаться вместе с ним вперёд поактивнее, забывать о руле без усилителя, пересаживаться на автоматы, обкладываться в круг парктрониками и т. п. Но я полностью согласен и с тем, что написал выше @HellRatz. Я в своё время сдавал на права, ЕМНИП, на вазовской шестёрке, первой моей машиной был сорок первый Москвич. По нынешним временам даже какой-нибудь Форд Фокус даст им сто очков форы по комфорту вождения. Но зато я сейчас могу водить механику и автомат с равной лёгкостью. А дочка, видите ли, учиться хочет на автомате и на права сдавать на нём же. И что будет делать, если под рукой окажется только механика, и надо куда-то срочно ехать, и альтернативы нет, а о помощи попросить некого? Лапу сосать? Это с одной стороны. А с другой - если из-за неопытности попадёт в первое время в аварию, не лучше ли сделать это на старенькой машине? В общем, система сдержек и противовесов. В любом случае пока рано говорить об этом всерьёз, когда и если время наступит - тогда и будем думать.
-
Не-не, десятилетние Жигули по цене металлолома ещё ой как пригодиться иногда могут. Меня старшая дочка давеча спрашивает: папа, вот мне скоро 18, на права сдам, можно я на нашей машине тренироваться по городу после этого буду? Пока отбрехался, ещё неизвестно, получит ли она эти права; жена в своё время выучиться не смогла. Но для тренировок я бы только на металлолом и сажал.
-
Где-то же выломали. Да и в больших городах, я потом слышал, это достаточно частый промысел. В России, по крайней мере.
-
Пластмассина... В бизнес-центр, в офисе которого я работаю, периодически приезжает один предприниматель. Зарабатывает, видимо, неплохо, машина у него - Porsche Cayenne. Как-то стояли мы с ним вместе во дворе в обеденный перерыв, о чём-то разговорились, в общем, познакомились. Спустя какое-то время смотрю: стоит его машина на стоянке, а вместо обеих фар - дыры. Потом спрашиваю, мол, что случилось, разбил? Не, говорит, за ночь выломали и унесли, никаких следов не осталось, никто ничего не видел. И теперь он думает, ставить новые, или заявление подавать с минимальной надеждой на результат, или ждать, пока на него выйдут с предложением о возврате, или вообще забить. Хотя там КАСКО, конечно, спасает, а ну как всё по новой случится? Я потом посмотрел - стоимость одной такой блок-фары на порш где-то в районе 130-140 тысяч (140! Тысяч!) наших рублей. Неудивительно, что они являются лакомым кусочком для воров. Машину не угонишь, особенно если она на спутнике, зато фарой полакомиться можно будь здоров. А ты говоришь пластмассина... Интересно, кстати, а как у вас с подобными кражами?
-
Хех, с однозначностью соглашусь, но направлю её в другую сторону. Не знаю почему, но Фольксвагены абсолютно не воспринимаю. От слова совсем. И это при том, что единственный раз сидел только в Пассате лет эдак 20 назад. Это какая-то необъяснимая, иррациональная личная антипатия, не подкреплённая никакими впечатлениями либо фактами. А выбор так или иначе делать придётся, кто ж спорит.
-
Да. Я не настолько часто машины меняю (в мае будет 11 лет моей нынешней, взятой в 2006-м из салона), чтобы решать проблемы, которые накопил предыдущий владелец. Ага, сейчас это один из вариантов, наряду с Nissan X-Trail и Mitsubishi Outlander. C учётом допустимой цены и при исключении подержанных вариантов. Но душа всё равно пока лежит к форику...
-
Я до кризиса о форестере всерьёз думал, так как часто хожу в походы, в последнее время забрасываемся в основном на машинах, и на своей пузотёрке несколько раз садился так, что коллегам вытягивать приходилось. А тут и клиренс, и размер побольше, чем у моего универсала, в последнем рестайлинге и комфорта значительно прибавилось. Но цена... тут согласен. Теперь вот думаю, на какой компромисс пойти в наступающем году, чтобы и семье хорошо было, и мне, как водителю, тоже.
-
Субару с оппозитным движком. И звук есть, и надёжность на высоте, в том числе у современных моделей.
-
@Kober(BRUC), разницы может не быть, но я бы сделал так: ini_file("gamedata\\config\\file.ltx") ИМХО, движок просто не находит файл. @Charsi, точно, я даже не обратил внимания.
-
[SoC] Ковыряемся в файлах
Kirgudu ответил на тему форума автора Halford в Скрипты / конфиги / движок
@Kober(BRUC), alife():create("item", vector(), 0, 0, self.object:id()) -
@Kober(BRUC), не уверен, что попытка записи в нетпакет значения nil, когда ожидается bool, не даст немедленную ошибку или отложенный сбой при загрузке. Пусть лучше кто-нибудь ещё уточнит, у меня нет сейчас возможности проверить. Если ты сохранил в нетпакет 2 переменных друг за другом, то там теперь лежат оба значения. При чём тут очередь? Смысл в том, что в каком порядке ты пишешь значения в нетпакет при сохранении, точно в таком же порядке ты их должен читать при загрузке. В таком же порядке и составе, без пропусков. Грубо говоря, если ты пишешь что-нибудь типа такого (обрати внимание на разные типы и, соответственно, длину значений в байтах): packet:w_bool(self.var1) packet:w_stringZ(self.var2) packet:w_float(self.var3)а потом пытаешься читать так: self.var1 = reader:r_bool() self.var3 = reader:r_float()то получишь ерунду.
-
@Kober(BRUC), packet:w_bool(self.inventory) self.inventory = reader:r_bool()От слов write (w_) и read (r_). Непонятно, откуда ты i_bool взял, разве что опечатка.Кроме того, чтение из пакета этой переменной должно быть ровно в том же месте, что и запись в него (соблюдение порядка). Ну и переменная self.inventory при записи должна иметь значение.
-
@CRAZY_STALKER666, нет там у тебя трёх «end». Есть это: return true AND db.actor:give_info_portion("bar_bandit_death_all")то есть на возврат идёт результат логического умножения true и результата выполнения функции. Не путай «and» и «end». Почему синтакс-чекер ругается при замене функции? Возможно, ты просто делаешь опечатку, например, ошибочно ожидая третий «end», его и ставишь.
-
[SoC] Ковыряемся в файлах
Kirgudu ответил на тему форума автора Halford в Скрипты / конфиги / движок
Эта функция есть в ЧН/ЗП (модуль xr_s.script), а в оригинальном ТЧ она отсутствует. Это просто информация, она не является показателем ошибки и на неё можно не обращать внимания. Если говорить о числах, то 594270 - максимальный level вертекс локации, найденный по game вертексам, 627038 - максимальный level вертекс локации, найденный уточняющим способом по координатам, 32768 - разница между ними. Скорее это совсем не верно. Ограничивая блоки кода признаком наличия актора (и, судя по всему, при отсутствии этого самого актора в переменной), ты принудительно инициировал появление других ошибок, которые, в свою очередь, могли привести к попаданию где-то в недрах скриптов в _g.abort() (а именно там есть вызов функции exit()). Лучше озаботиться поиском причин, почему же именно переменная actor (или, как мне кажется, db.actor, верно?) пустая. Возможно и в самом деле виновата кривая сборка, и тогда любая работа со скриптам является лечением симптомов, а не болезни. -
Не помню точно объём... полгода на книгу? Весьма вдумчивое чтение.
-
[SoC] Ковыряемся в файлах
Kirgudu ответил на тему форума автора Halford в Скрипты / конфиги / движок
@ins33, судя по всему, модуль таймеров или объединённый комплект модулей Artos-а взят из моего поста в теме «Сборочный цех»? Всё там есть, просто не надо делать скоропалительных выводов. Скрипт test_modules.script действительно содержит неточность и указывает на отсутствие интеграции в методе actor_binder:__init вместо actor_binder:__reinit - это я в архиве поправлю. В то же время изменение actor_binder:__init также требуется - это ясно видно из содержимого файла bind_stalker_ADD.script из комплекта подключения. Если говорить конкретно, блок if event then ... elseif ... end нужен, так как запускает первичный расчёт вертексов и некоторых других полезных переменных. Комментировать его не надо, иначе при проверке как раз возникнет вторая ошибка из поста выше. А вот на эти строчки из первого куска лога lua_helper:fGet_IniSection:ini=[<userdata>],NOT_found_Section=[levels],Type=[table]:<Error!> lua_helper:fGet_IniSection:ini=[<userdata>],NOT_found_Section=[levels_underground],Type=[true]:<Error!>внимания обращать не надо. Дело в том, что автор (Artos) добавил чтение при инициализации модуля lua_helper списков наземных и подземных из конфигов (levels.ltx и levels_underground.ltx соответственно, если они есть, или одноимённые секции из всех системных конфигов, если, опять же, таковые наличествуют). Если такие конфиги/секции не обнаружены, списки создаются пустыми и заполняются потом, в процессе игры. Это не ошибка, а особенность.Из общего комплекта удалять это, в большинстве случаев ни на что не влияющее чтение мне не хотелось бы. Но если смущает лишняя информация в логе, можно открыть на редактирование модуль lua_helper.script и в строках 88-89 вместо db.tLevels = Get_IniSection(ltx, "levels", "table", "val2num", ",") db.tUndergrounds = Get_IniSection(ltx, "levels_underground", "true")написать так: db.tLevels = {} db.tUndergrounds = {}Две мнимые ошибки в логе исчезнут. Добавлено: обновил общий комплект здесь. -
При любом сохранении. Разумеется, хранилище может переполняться от того, что туда пишется слишком много данных. Максимальный размер net-пакета (в том числе актора) в ТЧ равен 8192 байта, в ЧН/ЗП вдвое больше. Обрати внимание на содержимое скопированной тобой функции save_old(): в net-пакет актора что-то пишут менеджеры погоды, тайников и заданий, радара и детектора. Много? Без детального изучения неизвестно. Плюс запись текущих настроек. Плюс pstor, то есть хранилище, в которое пихали данные все, кому не лень. Посмотри в твоей же clean_pstor(): из pstor вычищаются аномалии, таймеры, прочие служебные переменные - на всё это нужно место в net-пакете актора. А сколько в твоём моде других, неучтённых здесь мест использования штатных функций записи/чтения xr_logic.pstor_store() и xr_logic.pstor_retrieve()? То-то и оно. Увлёкся, записал лишнее - опаньки, вышли за 8 килобайт. Потому и начали придумывать альтернативные варианты. Подробнее о разных скриптовых способах записи данных можно прочитать здесь: http://www.amk-team.ru/forum/topic/6185-skriptovanie/page-209#entry694323
-
@CRAZY_STALKER666, например se_stor от , который сохраняет данные как раз в таких объектах. Подробную информацию можно найти в постах автора модуля. Если не ошибаюсь, @Malandrinus тоже делал подобный модуль.
-
Практически так и есть, но дополню. Вызывается при любом сохранении (это ответ на выделенный жирным вопрос). Если в функциях self:save_old() и ogsm_debug.clean_pstor() содержится то, что можно предположить (OGSM для ТЧ нет под рукой), служит в качестве своеобразного контроля переполнения pstor актора во избежание появления битых сейвов. А именно: производится запись pstor (или что там делает save_old()) в чистый net-пакет, проверяется его размер, если всё в порядке, тогда pstor пишется в net-пакет сейва как есть, если же превышен допустимый для ТЧ максимум - предварительно очищается. Типичный "предохранитель" того времени, когда ещё не умели создавать кастомные объекты для сохранения большого объёма данных.
-
@dsh, вот точно помню, что исправлял! Аккурат тогда, когда прочёл сообщение об этой ошибке. Видимо, исправление «потерялось» во время интеграции правок от naxac. Спасибо, что сообщил, обновил выложенные сборки.
-
[SoC] Ковыряемся в файлах
Kirgudu ответил на тему форума автора Halford в Скрипты / конфиги / движок
@Badmodst74, вопрос из разряда "У меня автомобиль не заводится. Как завести?" с количеством потенциальных ответов, приближающимся к бесконечности; всегда такие нравились. Но телепаты традиционно в отпуске. Судя по знакомому коду, эта функция из мода типа AMK или OGSM и предназначена для срабатывания по истечении таймера определённого типа ("otf"). Таймер запускал? Id конкретного предмета ему передал? Никому, кроме тебя, сие не известно. А проще всего будет поискать в модулях своей сборки места использования метода set_condition(...) (легко делается разными средствами, например TC) и там, где оно явно связано с установкой состояния брони, заменить расчёт аргумента на простой math.random(), как предложено в примере выше. Сложности в этом нет никакой, вполне можно справиться самостоятельно. -
[SoC] Ковыряемся в файлах
Kirgudu ответил на тему форума автора Halford в Скрипты / конфиги / движок
@Badmodst74, math.randomseed(device():time_global()) obj:set_condition(math.random()) -
Согласен, не додумал.
-
@CRAZY_STALKER666, если в my_sid хранятся story_id, тогда так (для одного НПС): local se_obj = alife():story_object(sid) if se_obj then local obj = level.object_by_id(se_obj.id) obj:kill(obj) endгде sid - story_id убиваемого НПС.
-
@advisor890, if math.abs(distance - 10) < 0.1 thenЧисло справа меньше - граница более чёткая, но больше вероятности её пропустить, число больше - граница более размытая, но вероятность определения повышается. Сам задай число для сравнения, исходя из баланса между точностью определения и вероятностью его срабатывания.
УЧИМСЯ МОДДИНГУ
ИГРАЕМ В МОДЫ НА ТЧ
ИГРАЕМ В МОДЫ НА ЧН И ЗП
- [ЧН] 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
- ...и другие моды
ПОЛЕЗНОЕ И РАЗНОЕ