Artos
Я считаю, что тема "онли скрипты" прижиться сможет. В ней необязательно затрагивать СДК\модели\текстуры (по которым уже есть темы), под конфиги оставить эту. Ведь тема скриптов может и не больше, но уж точно не меньше всех остальных разделов вместе взятых, и поговорить о чём будет. А посты не по теме беспощадно удалять.
Конечно, что то обойти будет невозможно (all.spawn, или файл с содержимым для выпарсивания скриптом - то же ведь конфиг!), ну так оно и не страшно.
отредактировал(а) Darien Fx: 27-06-2010 20:49 GMT3 час.
Митрофанушка Главный герой комедии «Недоросль» (1783) Дениса Ивановича Фонвизина (1745—1792) — избалованный помещичий сынок, лентяй и неуч.
Имя нарицательное для молодых людей подобного типа.
Как видишь не ругательное, но и не ласкательное ...
И не апелируй к понятию 'новичок'. К тебе оно не относится.
Вопросы всегда были есть и будут, и постоянно будут и новички и др., и постоянно кому-то нужна будет помощь ... Но прочти Фонзивина, если еще не дошло, что помогать/учить митрофанушек - это уже иная тема ... не буду уточнять, дабы не обижать.
... что вы должны что-то делать, но помочь-то можно?
Помочь можно раз-другой-третий ..., но когда помощь не способствует тому, кому предназначена и он превращается в 'митрофанушку' (или продолжает им быть) и такие плодятся ..., то только отказ от помощи или хорошая порка может помочь!
Николай ФеНиКс
Я не хочу закрывать глаза! Тут публичный топик.
Я хочу читать и помогать тем, кому помощь нужна. И не важно, что порой работа по 15ч не одни сутки ...
И повторю, не нужно тут устраивать топик под 'себя', по своим ковыряниям и потугам их осилить. Делай это у себя на компе.
И если ты не можешь выкроить время на 'подумать над чем-то', то ... это уже клиника. И называется она - хочу выпендриться перед другими, каков я модмейкер. ;-)
Все, с тобою диалог закончил.
Человек или понимает другого или уперт или не хочет понимать.
Для меня - второе.
И если буду в этот топик заглядывать и помогать, то буду и 'носом тыкать в лужу' тех, кому даже штанишки лень приспустить для собственного облегчения ... (в рамках правил топика, конечно).
Вот и я давно уже говорю про то же.
Шансы получить ответ на интересующий меня вопрос, тут ничтожно малы. И не потому что кто-то родился с ЭВМ в голове, а потому, что (лично для меня) чувство собственного достоинства не позволяет опускаться до поднимания лапок к верху, из-за казалось бы тупиковой задачи. Ответ есть всегда. Даже отрицательный результат - тоже результат.
Поиск ответа на подобную задачу приводит и изучению кучи информации, вороша которую хоть что-то, но остается в памяти.
А если кому-то лень искать или поиски не приводят и результатам, бросайте всё это и займитесь чем-нибудь другим.
Уже сколько раз думал высказаться так, что забанят навсегда и уйти.
Но всё ещё встречаются люди, общение с которыми и интересно и полезно.
Был бы такой топик, о котором вы говорите - другое дело.
Stalk15
Мое мнение, что конкретно те, кого упомянул в 1-м посте, вместо (само)обучения и получению навыков модмейкерству (созданию модов) - получают в основном навыки по 'как халявное прикрутить к своим похотелкам'.
На протяжении последних месяцев до сих пор практически не заметно, чтобы были подвижки в азах программирования скриптов (не будем о другом). По каждому простейшему поводу, который отличен от 'вчерашнего' порой парой символов - уже не просто вопросы, а даже "проверьте за меня чО я тут сваял".
Все неоднократные советы, как самому научиться проверять свои же поделки - мимо ушей.
Каких-либо подвижек по саостоятельному изучению/написанию своих вещей не видно. Тупо берутся чужие универсальные поделки и так же тупо делаются попытки ими воспользоваться в еще не разжеванных ситуациях. Оч. напоминает басню Н.И.Крылова "Мартышка и очки".
... и т.д. и т.п. Не вижу смысла детализировать далее.
Николай ФеНиКс
Назови хоть одно слово/фразу, где я схамил! Извинюсь публично!
Только не нужно свое понимание горькой истины называть хамством!
Назвать публично второгодника второгодником - хамство?
Назвать лентяя/плагиатчика/неумеху/неуча - тем, как это принято называть - хамство?
Сними розовые очки и взгляни в зеркало критически - и подбери себе сам достойное определение, если 'митрофанушка' - слишком обидно.
Gun12
Готов подписаться под каждым тобою высказанным словом.
Тоже, за всю свою историю ковыряния со Сталкером, только не более 3-х раз обратился с вопросом "а как сделать?" и НИ РАЗУ - а почему у меня не работает. (и я НЕ программист даже близко!).
Если человек занимается интересным/любимым делом - то почему он не считает нужным в этом совершенствоваться, при чем НЕ за счет других?!
В ближайшее время тема будет почищена. Хотелось что бы Николай ФеНиКсStalk15 поняли что им пытались донести, впрочем судя по их реакции до этого еще далеко.
Artos
Еще раз спасибо вам за проделываемую общественную работу. Что касается 'хамства' - боюсь вы переоцениваете способность к самокритики тов. Николай ФеНиКс, для этого придется скорее всего подождать пару годков.
Cos
Сорри, за несколько разворошенный пчелиный/осиный домик и спасибо за понимание! :-)
Сделал это только из чистых побуждения и конечно ни кого не хотел унизить/оскорбить.
Основная цель - чтобы хоть немного задумались над 'СОЗИДАТЕЛЬ' и 'посредственный подражатель'.
Переоценки нет, скорее терпение заканчивается наблюдать регресс.
Как уже тут упоминалось как-то - иногда 'подзатыльник' полезнее уговоров/разъяснений и тем более потаканий, ИМХО конечно.
(посты по 'общим' измышлениям конечно можно почистить ... и по-реже бы их повторять)
Artos Спасибо за ответ на мой пост.
Но тем не менее я не могу понять как правельно задать безопасную зону. Вроде прописываю все по примеру, а ГГ во время выброса всеравно хитует. Если не трудно можно пояснить что к чему в этой таблице.
Фаил: amk_hideouts.script
Переводить с английского я пытался, но нормально создать безопасную зону так и не получилось.
Понял что есть точка входа для НПС минуя, которую они вбегают в безопасную область и останавливаются. НО если я вбегаю в эту точку то ГГ хитует так же как и вне её.
Какая форма безопасной области Сфера или Куб и как правельно указать p1 и p2?
И еще правельно ли я понял: в center и entrances указываются левел_вертексы уровня?
З.Ы.: По прежнему не могу отформатировать текст кода. Что не так не могу понять. :-G
Artos
К вопросу, - "А как сделать?"
Или я уже замучал iНЕТ, или он меня (возможно не очень настойчиво искал), но так и нашел ответа на вопрос о использовании следующих параметров логики (общие понятия мне известны, но на данный момент веду разработку программы создания гулагов. Неделю назад только начал изучать wхLuа, поэтому в поиске ответов "цейт нот". Хотелось бы, для общего блага, знать всё о нюансах) :
position_threshold
squad
groups
Или подскажите, где искать информацию.
karavan
(сразу оговорюсь, могу сфальшивить, т.к. ориентируюсь не на 'amk_hideouts.script', а на симбионовский 'm_hideouts.script', по сути аналогичный и сделанный по материалам АМК'шного)
1. Собственно модуль 'зон укрытия' работает в паре с модулем выброса, точнее он является таблицей данных, которые используются основным модулем (выброса и также спавна дин.аномалий).
2. Все зоны безовасности (далее 'укрытия') разбиты 'по локациям', т.е. для каждой - свои укрытия.
3. Каждое укрытие ограниченно некоей областью, как правило имеет центр этой зоны/укрытия и вход в эту зону.
4. Разберем параметры:
aviable - флаг разрешения использования неписями. Если 'true' - неписи могут в него заходить и прятаться. Обратное - как например 1-ое укрытие (бункер Сидорыча) - заходить не могут и укрытие по сути защищает Сидорыча и ГГ, если оказался там.
community - (string) можно догадаться, строка, которая определяет какие группировки могут прятатся в данном укрытии. Необходимо для исключения бойни между враждующими круппировками в каждом укрытии. Бандиты не бегут где сталкеры и т.п.
center - (iLvid) - вертекс, определяющий центр зоны укрытия. Дабы не скопляться в точке, неписи устраиваются по площади укрытия относительно центра. Также используется как вторая точка пути при движении неписей в укрытие.
entrances - (iLvid) - вертекс, определяющий точку входа в зону укрытия (первая точка пути при движении в укрытие). Используется и как точка пути при выходе. Неписи бегу вначале к 'двери' и только после к 'центру'. При выходе - идут 'к двери' и далее - 'по своим делам/позициям'.
zone - (tables) собственно описание области укрытия. Состоит из пар точек (p1 и p2) некоторых позиций (стандартные координаты (x,y,z) для позиций) на плане. Факт нахождения неписи в укрытии определяется (см. function check_npc_in_box(npc,p1,p2,p3)) как 'в квадрате, с p1 и p2 в противоположных углах'.
При наличии p3 - проверка идет 'по кубу' - это если укрытие не одноуровневое (ступеньки/ярусы/ ...).
Также при больших объемах укрытий, они могут описываться несколькими квадратами/кубами (см. укрытия с несколькими парами p1, p2, [p3] ).
Относительно ГГ в данных модулях нет никаких привилегий и особенностей. Так же вычисляется нахождение актора внутри заданных квадратов/кубов.
Особенность только в том, что ГГ сам определяет куда бежать и в каком укрытии укрываться.
Схема движения в(из) укрытия на него естественно не действует.
При нахождении вне 'зон укрытия' - хитуется как и неписи (в Симбионе посильнее).
Т.о. создав свое укрытие/зону безовасности по типу 1-го (l01_escape={ [1]={...)), ... ), добавив порядковый номер укрытия ([XX]={...)) на локации и, задав координаты для квадрата/куба -можно создать зону для ГГ (иль еще кого/чего-то). Форматировать коды можно двояко:
а) с использованием тэга 'code' (см. там же где и 'спойлер'), сохраняются пробелы и пр., но тогда нет возможности расцвечивать,
б) форумными HTML-тегами, но пробелы следует заменять неразрывными пробелами (см. там же).
Gun12
Вынужден сейчас ответить: "Не готов."
Где почитать - не рискну даже посоветовать, т.к. многие материалы попадавшиеся на глаза написаны очень посредственно (мягко говоря) и скорее зашорят, чем помогут.
Собственно по гулагам, ИМХО, только основные старые wiki-статьи можно использовать или искать/изучать в оригинале/модах.
И, сорри, засплавился от духоты ... и друг подъехал ... ;-), прохладное пиво тоже не менее интересно в настящий момент, чем головоломки с кодами.
Давай чуть отложим, тем более ... помню за собою 'гулаговый' должок, который присувокупить можно будет.
Artos Благодарю.
Остался возможно не совсем правельный вопрос.
Я не совсем понял один момент, укрытие должно полностью закрывать ГГ. Т.е. Если ГГ вошел в куб и из него торчит голова ГГ-я, то его будет хитовать. Или же укрытие формируется в вертексе и не имеет значение какой форма укрытие?
Я прощу простить, но ведь куб может иметь разный размер, вот из-за этого я и задаю свой дурацкий вопрос. Просто я пытаюсь понять какое растояние надо выбирать для точек что-бы куб был правельный, т.е. укрытие для ГГ работало.
....если это кому интересно:
скриптовый вызов анимации NPC (немного потестил методы и нашел наконец нужное сочетание - NPC остает**5001c54314580bda8be6** end
npc:clear_animations() -- прерывание\отключение текущей анимации
npc:add_animation("udar_0", true, false) -- активация анимации из файла state_mgr_animation_list
end[/code]
примечание: то что мы привыкли называть анимациями NPC (punch, ward, sleep, threat, wait и т.д.), правильно называть состояниями (state ) которые в свою очередь состоят из набора анимаций. Метод
add_animation() в качестве аргумента принимает именно отдельную анимацию, а не состояние(откуда их взять я указал - но там перечислены не все имеющиеся анимации.). (с методом state_mgr.set_state() еще предстоит разобраться - почему он работает не совсем так как ожидалось.)
----------------------------------------------------------------- Atros
Загляну в указанные схемы. Спасибо что указал - а то у меня волк пока находился в состоянии "idle" никак не хотел отыгрывать состояние "punch" через метод set_state()
И еще мне пока неясно применение проверки на число анимаций.
отредактировал(а) erlik: 28-06-2010 00:24 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
karavan
Я же дал название функции, где можно посмотреть проверку нахождения ГГ в зоне.
Упрощенно: в трех-мерных координатах заданы две точки.
ГГ считается 'внутри', если его x,y,z координаты внутри соответствующих осевых диапазонов заданных точек.
Считай это квадратной комнатой, 1-я точка в углу на полу, а 2-ая - в противоположном углу (по диагонали) на потолке. Размер ком**5002c54314580bda8be6**n("idle_0_to_sit_2",true,false)
oNPC:add_animation("item_5_attack_0",true,false) --/ пьет лекарство
oNPC:add_animation("sit_2_to_idle_0",true,false)
state_mgr.set_state(oNPC,"eat_energy",nil,nil,nil,{animation=true})
self.end_time = tg + 5000
self.end_time_total = self.end_time + 2000
self.initialized = true
local oYad = oNPC:object("yad")
if oYad then oYad:enable_attachable_item(true) end
end
else
...
[/code]
особенностью тут то, что для отыгрыша анимаций требуется время, поэтому введен таймер тайм-аутов и следующие циклы/или из других схем (если требуются), дополнительно проверяют на окончание всех ранее добавленных анимаций (:animation_count() == 0).
Примечание: Метод подходит только для клиентских объектов (game_object).
P.S. Проверка на 'число анимаций' нужна/полезна тогда, когда непись уже проигрывает некую серию анимаций и не желательно прерывать эту серию, т.е. 'ожидаем окончания'.
Иначе могут быть коллизии и непись начнет дерганно пытаться отыгрывать куски разных ему добавляемых анимаций.
Да и стейт-менеджер нередко 'давится' при подобных прерываниях/переключениях.
#С Н А Й П Е Р : Stalk15 спасибо большое, ещё один вопросик. Я хочу сделать через диалог усовершенствование оружия. Примерно будет выглядеть так - если есть 5000 и Ак-74, то 5000 и Ак-74 забираем, а выдаём Ак-74 скорострельный. Ну допустим так. Как это всё будет выглядеть в диалоге?
добавлено спустя 1 минуту
А если денег и пушки нет, то гудбай Меченый. Как это в диалоге сделать?
С Н А Й П Е Р такая фигня, вобщем если пользоваться функцией передачи денег и впиндюрить две проверки, скажем на деньги и на предмет, то функции выполянются в плане того, что появляется надпись: потерено то то то то, но сами предметы остаются, если же есть одна проверка, скажем на деньги, то деньги исчезают ( я использовать (традер актер)
Но с двумя проверками денги остаются а пишется что потеряно, и это можно решить таким образом, ставь функцию удаления предмета. У меня лично ак 74 удалятеся и ставится улучшенный, но функцию ля появления надписи (потерян предмет) я делать не стал так как много писанины и юез нее все работает.
Вот смотри как у меня все работает:
Вот функции:
function pr_wpn_rg6_m1(first_speaker, second_speaker)
return first_speaker:object("wpn_rg6") ~= nil
end
function dont_pr_wpn_rg6_m1(first_speaker, second_speaker)
return not pr_ak74(first_speaker, second_speaker)
end
function Delete_wpn_rg6_m1_yar()
local oItem = db.actor:object("wpn_rg6")
if oItem then
db.actor:drop_item(oItem)
alife():release(alife():object(oItem:id()), true)
end
end
function na_wpn_rg6_m1 (trader, actor)
dialogs.relocate_item_section(trader, "wpn_rg6_m1", "in")
end
function wznos(first_speaker, second_speaker)
return first_speaker:money() >= 2500
end
Вот диалог:
Сделай ка апгрейд на бульдог 6, чтоб зарубежными гранатами стрелял. There
Хотелось бы уточнить, правильно ли я разобрал содержание нет пакета для НПС? В коде есть ещё 3 вспомогательные функции из Симбы (надеюсь, Artos не обидится), т.к. я и не по**5001c54314580bda8be6**
end
return v
end
function get_vu8u8(pk)
local v = {}
for i=1,8 do
table.insert(v,pk:r_u8())
end
return v
end
function get_vu32u8(pk)
local v = {}
local len = pk:r_s32()
for i=1,len do
table.insert(v,pk:r_u8())
end
return v
end[/code]
Если я сейчас похож на "нахлебника", то пост удалю и продолжу разбираться :-)
Darien Fx
Сделано как минимум три грубых ошибки:
1. Пакет имеет строго определенную последовательность байтов и их значений и малейшее нарушение порядка при чтении (и тем более при записи) ведет к фатальным ошибкам.
В твоем случае уже видно, что из пакет начато чтение НЕ секции 'cse_alife_object' а 'свойства cse_alife_trader_abstract' ...
Ну и далее все вперемешку.
2. Если читаешь пакет - то читай. Возможен совмещенный вариант: читаем и тут же пишем.
Но(!) никогда не читаем/пишем кусками!
-- свойства cse_alife_monster_abstract
local upd_next_game_vertex_id = pac:w_u16() --/ и это при чтении?
... и далее ...
3. Пакет монстров и неписей НЕ имеет точной длины. В конце есть 'кусочек', который, например меня заставил немало времени потратить ... и до сих пор нет окончательной ясности.
В простейшем случае требуется просто добавить в конце 'чтение остатка' в некий массив.
На полноту корректности не проверял. Уж больно муторно сверять каждый символ.
На то и проверка у тебя в конце. Вывести клчевые и последние значения - вот и увидишь правильно ли считал.
Еще более правильно: считать->записать->прочитать->вывести в лог и проверить значения.
Нахлебник - это не тот, кто пользуется чужим трудом, имея весткую на то причину, а тот, кто в качестве этй причиной считает свою лень/псевдозанятость/... и т.п.
Все мы начинаем с 'тыкаемся как слепые котята' и 'сосем мамкину титьку', но ... спустя неделю-две - из иждивенцев становимся совсем иными, и тем более НЕ нахлебниками! ;-)
P.S. Кстати, вопрос по нет-пакетам был одним из 3-х, который я кому-то сам задавал во кодам Сталкера. (и ответ был ... никаким, т.е. разбирайся сам ...)
В твоем случае уже видно, что из пакет якобы начато чтение НЕ секции 'cse_alife_object', 'свойства cse_alife_trader_abstract' ...
Ну и далее все вперемешку.
Я пробовал начинать с cse_alife_object, но первая же переменная указывала на количество денег НПСа, вторая на название конфига (всмысле в character_desc_*) НПСа и т.д.,**5003c54314580bda8be6**Npc = alife():create("esc_baran", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id())
local pac = net_packet()
sNpc:STATE_Write(pac)
local money = pac:r_s32()
pac:w_s32(100)
pac:r_seek(0)
sNpc:STATE_Read(pac, pac:w_tell())
end[/code]
Но к сожалению, у НПС кол-во денег так и не изменилось.
Как я понял, без общего представления "что, где и как" находиться очень трудно разобраться. Я перечитал все посты на АМК, но теория теорией, а с практикой туговато.
Можно читать не с начала, только конкретный кусок
Я догадывался, что это можно делать смещением, но конечно же не пытался :-)
erlik
Я так тоже пробовал, не выходит. Сдаётся мне, что сначала нужно считать из пакета всё, а потом уже записывать все значения (а нужные изменить). Как например в функции спавна аномалии, там считываются даже те параметры, которые не указываются при спавне аномалии в all.spawn, а потом так же все и перезаписываются. Вот и наводит на такую мысль.
отредактировал(а) Darien Fx: 28-06-2010 20:10 GMT3 час.
Darien Fx
Повторяю, последовательность в нет-пакетах строго определена классами объектов.
Можно читать не с начала, только конкретный кусок, ... но никогда не гадай/предполагай.
... (сорри, вынужден прерваться, работа ... продолжу попозже)
Darien Fx
Попробуй так сделать: последовательное считывание и запись все таки надежнее, чем кусками.
я в свое время пробов**5001c54314580bda8be6**вку --тьфу ты здесь ошибся - нужно же айди группировки ,а не имя
packet:w_u32(rank)
packet:w_u32(reputation)
packet:w_stringZ("Дядя Вася") -- меняем реальное имя
packet:r_seek(0)
sobj:STATE_Read(packet, packet:w_tell())
end[/code]
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
каким образом идет порядок пунктов в квесте? создал квест, стал менять пункты, первый должен стоять посередине.. и вообще какая-тто чушь... какой порядок должен быть в файле task_xxx?
musnuk
Эээ...чоёта как-то вопроса не совсем понятно ...
Могу показать на п**5001c54314580bda8be6**ap_location_type> Escape_Trader escape_kvest_with_military_complete
[/code]
То есть в игре, при получении квеста будет такой порядок:
Само титульное название:Сделка с Военными и далее пункты:
- Взять у Волка динамит
- Отнести динамит военным
- Принести ящик с оружием Сидрычу.Ну все, у меня так все работает на отлично:ye)
Если где не прав - поправьте.
------------------------------------------------------------------------------------- FLIKER
Ты про Аптечки, которые рядом с Сидрычем на всяких каких-то полках лежат?
отредактировал(а) Stalk15: 28-06-2010 20:39 GMT3 час. Новые фишки для сталкера(см. журнал)
И начни с малого - пиши тексты/посты , соблюдая правила грамматики/синтаксиса.
Если люди, читая, еще смогут тебя как то понять - скрипты этого не прощают.
Видя тексты/вопросы/просьбы о помощи, оформленные наспех, без соблюдения правил русского языка, без заглавных букв, с ошибками (оЧепятки не в счет) и т.п. - как правило игнорирую.
2. Не стОит оправдывать различными причинами (плохой интернет, пишу с телефона, залипает клавиатура и т.п.) то, что в правилах или в сетевом этикете для всех.
Ты же никуда не спешишь и можно подождать загрузку и тем более - можно и поотключать картинки/банеры и пр. Пару-тройку раз подобное простительно и даже бывает, но более - это уже как минимум раздражает.
3. Задавая вопрос, потрудись сделать его информативным и понятным для вероятных адресатов.
О каком/каких квестах ты спрашиваешь? Что за 'пункты' и 'середки', что за файл без расширения, скрипт иль конфиг ил еще какая xml'ка?
Почему кто-то должен догадываться, предполагать и т.п., тратя время, если достаточно немного полнее задать свой вопрос?!
4. И что-то ты полез, ИМХО, не в ту область.
"task_XX.script" - технологические скрипты разрабов, завершающие некие задания выдачей 'полных' наборов соответствующих инфопоршней и спавном 'кучи' предметов.
Никакого отношения к игре это не имеет и по сути - чит-скрипты.
Ну а 'пункты' - это списки инфопоршней и их порядок в этом случае безразличен. Stalk15
Ну во-первых, забИрающий.
А во-вторых, зря ты вторично уточняешь то, что по сути неверно. 'name_portion' - именно удаляющий.
Выдача инфопоршня (give_info) - занесение/добавление в некую таблицу соответствующего индекса.
Соответственно 'disable_info' - удаление из таблицы.
И хотя добавление/активизацию инфопоршня обзывают 'выдачей', то удаление/отключение/деактивацию не называют 'забиранием'. Darien Fx, erlik
Сорри, но я не понял уже сути вопросов о нет-пакетах. Что-то конкретное делается/пишется или просто некое исследование/учеба по ним?
Artos
Пока идёт только исследование, что бы потом уже делать что-то конкретное. Вот сейчас интересует вопрос, как правильно читать и сохранять данные для оффлайн НПС, т.е. через STATE_ (неправильная работа с ними в моём предыдущем посте).
Просто хочеться знать, с чего начать:
а) с определения порядка значений в нет пакете НПС, что бы правильно считать все данные из пакета.
б) с изменения (чтения-записи) какого-либо одного параметра (как вариант первого - количество денег), для практики.
отредактировал(а) Darien Fx: 29-06-2010 02:03 GMT3 час.
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.