-
Число публикаций
6 272 -
Регистрация
-
Последнее посещение
-
Дней в топе
33 -
AMKoin
551 [Подарить AMKoin]
Весь контент пользователя Dennis_Chikin
-
Прозекторская
Dennis_Chikin ответил на тему форума автора Dennis_Chikin в Скрипты / конфиги / движок
У меня там всего 600 байт лежит. Из которых еще 300 подлежит сносу. При том, что легким движением руки максимальный объем расширяется до бесконечности. Ну так и почему бы не pstor тогда ? P.S. Пф ! Можно подумать, что есть всего один мод на 13 Гб... Ну пусть не на 13, а на 14... (Это хвост про таймеры, которые не нужны. Бурное обсуждение "обо всем" перехало во флудилку.) -
Прозекторская
Dennis_Chikin ответил на тему форума автора Dennis_Chikin в Скрипты / конфиги / движок
{} Да, это все лирика была. Вообще-то, планировал еще и расписывать: как, что и зачем сделано, но... В общем, попытаюсь. В принципе, планировалось все по порядку описывать, с пляской от собственно _g, но можно и "с конца". Итак, собственно, с конца и пойдем: init() -- инициализация. Цепляем тогда, когда появился актор. Раньше просто смысла нет. Что делаем: Из pstor берем табличку таймеров в формате { имя таймера, время срабатывания от момента старта, данные } Сохранение pstor слегка переделано (см. прозекторскую), так что преобразование таблиц в строки и обратно дополнительно делать не нужно. Хранится все довольно компактно, самих таймеров и данных реально мало. Сиречь, ни каких дополнительных хранилищ тоже не нужно. Далее осталась табличка для руками забиваемых функций - атавизм от "13Гб мода" . Поскольку все закомментировано - очевидно, что уже не нужна. bind_stalker.task_add() - вешаем на апдейт актора (раз в 200 ms, чаще нет смысла), bind_stalker.add_on_save() - добавляем функцию, вызываемую при сохранении. (Да, руки дойдут - распишу, но вообще по аналогии с коллбэками по предметам - чтобы по 50 скриптов не трогать при подключении нового). on_save() -- вот та самая функция, вызываемая при сохранении. Что и зачем: нам не нужно знать, сколько времени прошло от начала игры. Нам нужно знать, через какое время сработает. Поэтому храним не 64бит-впемя, а дельту. Сколько осталось до срабатывания. Вот эту дельту и вычисляем. check_timers() -- проверка таймеров. То самое, что добавляли на апдейт. В принципе, все прозрачно. Время срабатывания подошло - вызываем и удаляем. Практически как в оригинале. Только что табличка отсортирована по времени, то, что должно сработать раньше - в хвосте. Перебираем не все, а прекращаем проверку на первом же вхождении, которое "еще не пора". timer_stop() -- удаление таймера, если вдруг стал не нужен. Не дожидаясь сработки. timer_start() и timer_g_start() -- запуск таймера для реального и игрового времени соответственно. Реальное здесь сразу преобразуется в игровое, по тому что смысла на самом деле нет хранить и считать по-разному. Все события игры привязаны так или иначе к игровому. timer_add() -- добавление новой функции, которую будем вызывать по таймеру, из сторонних скриптов по инициативе этих скриптов. То есть, все а же система, что и с bind_stalker.task_add() и т.д. has_timer() и timer_get_f() -- соответственно, проверка на то, что функция уже добавлена, и что таймер запущен. В основном, на случай, когда одинаковая функция требуется более чем одному скрипту. Ну и некоторые сценарные события можно контролировать - например, ждем, пока произойдет одно, прежде чем добавить другое. Собственно, вот, такая вот процедурщина. По тому что именно на процедурщину заточено железо и среда. Пример использования - в скрипте сна можно найти. По тому они в одной теме и лежат. Собственно, один из 2-х случаев из упомянутого 13Гб мода. 2 Shadows: а вот ООП здесь почему-то оказалось ну вот совершенно незачем. P.P.S. да, загадочная переменная game_time_ms - это время от загрузки игры. -
Курилка программистов
Dennis_Chikin ответил на тему форума автора Азраэль в Скрипты / конфиги / движок
Ну вот как бы +1, но это еще надо сделать. А пока годика 3 как есть вот такая штука, которую можно использовать, банально заменив в вызовах префикс с amk. на amk_netpk., или вообще банально копипастой нужного к себе (что с amk не получится). -
Более того, в оригинале на каждой из локаций достаточно ограниченное разнообразие всего.
-
Курилка программистов
Dennis_Chikin ответил на тему форума автора Азраэль в Скрипты / конфиги / движок
"Для чего нужно ООП?" - вот понятия не имею. Типа, как бы, для сокращения времени разработки, но вот по реализациям - я бы не сказал. Наличие определенной дисциплины при создании библиотек было бы на много полезнее. Возвращаясь к кулинарии: 1. создаем таймер. 2. перебираем таймеры. В цикле. 3. выполняем запуск по таймеру. 4. удаляем таймер. 5. пересоздаем таймер. А еще - сохраняем и и загружаем таймеры + параметры. Ради чего ? Ради одного действия в известный момент времени. Ну, преобразование количества срабатываний во время - это уже вообще за гранью бобра и зла. Вообще я вижу им применение - это многократные но иррегулярные события через плохо предсказуемые промежутки времени. Ага, теперь осталось такие события найти. -
Ну, в общем-то, в котлетах - оно же ведь и есть "в собственном соку". А с оленями - тоже упущение. 8(
-
Курилка программистов
Dennis_Chikin ответил на тему форума автора Азраэль в Скрипты / конфиги / движок
Ну, давайте поговорим о кулинарии. Во-первых, кстати, да: я надеялся альтернативные варианты здесь тоже увидеть. С описаниями. Что касается амк, то вот до меня, например, доползли сон, выброс и новости. Ну и еще порча костюмов в луте. Плюс какие-то странные простыни с выбрасыванием предметов. Как он сделано - создаются эти самые таймеры, перебираются с лютой, бешеной частотой, наконец срабатывают и удаляются. По срабатыванию проверяется количество этих самых срабатываний, как-то подобранных для прибитого гвоздями значения в alife.ltx, создается запускается новый таймер. Зачем ? Если по факту раз n секунд надо лишь проверить, не наступило ли собственно время для события х. То есть, сравниваем нашу константу с game_time(). При чем здесь таймеры ? С лутом - там вообще все странно, поскольку задача - дождаться появления искомого предмета в онлайне, и что-то с ним сделать, и выжидать ровно секунду (при этом зачем-то сохраняя ее в сэйвах !) - это либо много, либо, кстати, можно вполне и на любимое всеми "e-entity" напороться, если трупик далеко лежит. О простынях в полмегабайта функций на выбрасывание предмета - ничего не скажу, по тому что п2.0 правил. Все написано в теме про инвентарные коллбэки. То есть, где и для чего именно нужен именно таймер - я так и не понял. Может быть кто-нибудь разъяснит. Итого, по ссылкам - костыль, на время, пока эти простыни станного не будут заменены на что-то более другое. P.S. По сну - меня в принципе вполне устроило то, что выложено здесь. Секунды ловить - неинтересно. Да и в общем-то не планируется ни каких таких "длинных" апдейтов во время "промотки". Ну а в этой теме он лежит именно для иллюстрации, поскольку остался единственный таймер, понятия не имею для чего используемый и используемый ли вообще. Но остался. P.P.S. Да, надеюсь, что руки дойдут до расписать смысл и устройство предлагаемого костыля, поскольку он тоже, в какой-то степени, "комплексный". Но опять же, рассчитан на то, что в него ДОПИСЫВАТЬ ничего не надо - полностью управляется "внешними" скриптами. А вот избыток "интегрирования" - я считаю, что не есть хорошо. Но, возможно, кому-то удобнее "интегрированное". -
Дык, эта... Из последних сил празднуем ! P.S. Да, действительно, что-то так маринованных лисиц до сих пор и не попробовал. Надо исправлять.
-
Пойти, по-быдляцки, муксунчика зажевать, что-ли ?
-
[SoC] Ковыряемся в файлах
Dennis_Chikin ответил на тему форума автора Halford в Скрипты / конфиги / движок
Гм, с учетом того, что в ОП движок ни кто не правил, мне удивительно слышать, что там что-то не так, как в другом месте. Но, кстати, да - что-то этакое, странное, замечалось. Не в ОП отнюдь. Ни заглянуть в собственно движок, ни поиграться с порядком k в system руки не дошли пока. 8( P.S. А давайте мы все-таки будем писать больше по делу, и меньше - про отвлеченные материи ? Это так - пожелание, обращенное к неопределенному кругу лиц. Только вот в четверг тему чистил... -
Курилка программистов
Dennis_Chikin ответил на тему форума автора Азраэль в Скрипты / конфиги / движок
"волоча за собой 13-гигабайтный прицеп глобального мода" Ну вот собственно да. Это и есть ответ на все вопросы, заданные выше, кроме как про то, чтобы кому-то сделать уже хорошее годное описание того, что мы имеем к 15-ому году в смысле движков. -
Курилка программистов
Dennis_Chikin ответил на тему форума автора Азраэль в Скрипты / конфиги / движок
Опять за рыбу деньги... Есть полтора десятка разных поделий, с которыми имеем эффект хромоты. Меняем вызовы тупо поиск/замена - эффект пропадает. Дальше уже можно спокойно разбираться по отдельности с каждым поделием. С Вариантом Артоса - разница на порядки во-первых, во-вторых - замена в данном случае не проще, чем сразу все переписать. -
И где человек, похожий на генерального прокурора ?
-
Только что в скайпе привет передавал всем архитекторам и прочим знатным арбузоводам. Ну, через кого передавал - тот сам решит, что до кого доводить, а что - нет. По тому как лично с арбузоводами не общаюсь. С космонавтами - тем более. Но да, гостям всегда рады, однако пусть одеваются потеплее. Морозы у нас тут нынче.
-
Нехай "Эшелон" расшифровывает. Там на это бюджет выделяется. А мы тут по-простому, по рабоче-крестьянски. Что можем и как можем.
-
Gameplay - как сделать ЭТО, чтобы ОНО всем нравилось ;)
Dennis_Chikin ответил на тему форума автора Dennis_Chikin в Школа моддинга
"то там лучше на колбеках" - да вообще-то как бы без разницы, на каких. Что, выложить еще полный кусок, следящий за инвентарем актора вместо того фрагмента ? -
Gameplay - как сделать ЭТО, чтобы ОНО всем нравилось ;)
Dennis_Chikin ответил на тему форума автора Dennis_Chikin в Школа моддинга
Не, ну я лично все итерации поснес к {церковнославянскоименуемой} Богомыши. Кроме как по закрытию инвентаря проверять арты на поясе. По тому как вариант, на который рассчитывал, так и не заработал. (Да, кстати, надо в справочнике поправить про мнимую разницу между разными iterate_что-попало. Нет там ни какой разницы - и слоты и пояса проходятся во всех трех вариантах.) -
Gameplay - как сделать ЭТО, чтобы ОНО всем нравилось ;)
Dennis_Chikin ответил на тему форума автора Dennis_Chikin в Школа моддинга
Зачем же каждый раз ? Даже и одного не нужно. Но ему надо полноценный слот, или что ? Если слот, то штука чисто движковая. (Мда, на счет "полноценности" здесь возможны разные мнения.) upd: Это мы-то агрессивные ? А для сферовакуумного незнайкм с аптечками в соседней теме разжевано ну я даже уже не знаю до куда. -
"Имею желание, но не имею возможности ! Имею возможность, но не имею желания ! Так выпьем же за то, чтобы ..."
-
С какой целью интересуетесь ? А допуск у Вас есть ? P.S. Одноразовый шифроблокнот, сформированный с физического датчика, не ломается по определению.
-
"Заспавнить сидящим" - ни как. Только назначить логику kamp@, или написать что-то свое, принудительно отключающее любые другие схемы, и устанавливающее state_mgr.set_state( npc, "sit_ass" ) http://stalkerin.gameru.net/wiki/index.php?title=SoC._%D0%9B%D0%BE%D0%B3%D0%B8%D0%BA%D0%B0_NPC
-
Сегодня все шифровками изъясняются, вот и я тоже решил. А дополнительная цифра - это "соль". Чтоб, значит, для надежности. 84543 23605 76472 11409 56723 35536
-
148536 574954 776925 036784 124557 698848 700913 081305 843340 651013 308452 994561 307255 432967 413445 154561
-
Ковыряем ОП-2
Dennis_Chikin ответил на тему форума автора Dennis_Chikin в Объединенный Пак (ОП, ОП-2, ООП)
А пда потом солить что-ли ? dialogs_arhara.xml -
Ну, собственно, и tips и custom_static'и вполне годятся. В принципе же - старый бобрый "биорадарчик". Текст масштабировать смысла не вижу.
- [ЧН] 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
- ...и другие моды