Пользователей: 0
Гостей: 856
Всего: 856

» Подробно
» Сегодня

Привет, Гость!

» Добавить в избранное

» Сделать стартовой

Главная
Форум
Обзор игры
Мир Зоны
Файлы
Галерея
Разное





Форумы > Архив > Свалка > Модификации ТЧ, вопросы и ответы (старое, по 14.06.11)

Страница 8 из 63Первая«567891011 »Последняя

 
Автор Сообщение
erlik
[10] Житель
    
0
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
12-02-2011 19:20 GMT3 часа #1434732    
Arist
Код:
local tExeptItems =
{
["bolt"] = true,
["device_pda"] = true,
["binocular_a"] = true,
["device_torch"] = true
}
function __del_item(actor, item)
local section = item:section()
--// если предмет есть в таблице - вернем false
if tExeptItems[section]  then
return false
end
alife():release(alife():object(item:id()), true)
end

Ты это имел ввиду?


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Ma$ter
[1] Странник
    
0
Посты: 477
Откуда: Tamboff
Возраст:
12-02-2011 20:12 GMT3 часа #1434765    
killer2203
Поставь ActivePerl Когда я начинал копаться с алл.спавном год назад, у меня такая же проблема была
Arist
Не понял вопроса. Тебе нужно чтобы у актора отнимался фонарик болт и пда? Если да, то тогда я тебе сразу предупреждаю - отнимать болты фонарики и пда ненадо, ибо они нигде не продаются


Знание assembler, C/C++, Pascal, Lua.
Arist
[1] Странник
    
0
Посты: 310
Откуда: Москва
Возраст:
12-02-2011 20:55 GMT3 часа #1434797    
erlik erlik
Спасибо.Именно это.Я пытался:

local tExeptItems =
{
["bolt"] = true,
["device_pda"] ,
["binocular_a"] ,.
}

В идеале хорошо было бы Сделать её,вместе с отметанием денег и выложить в журнале.Хотя,если деньги забрать в диалоге - никто не заметит.


fan fan
[1] Странник
    
0
Посты: 189
Откуда: калач
Возраст: 30
12-02-2011 21:39 GMT3 часа #1434834    
Ответьте кто-нибудь как исправить вот это
Expression : vertex || show_restrictions(m_object)
Function : CPatrolPathManager::select_point
File : E:\stalker\patch_1_0004\xr_3da\xrGame\patrol_path_manager.cpp
Line : 155
Description : any vertex in patrol path [esc_sin_voron3_walk] in inaccessible for object [esc_stalker_nebo317047]


Я тут подумал, а если два телепата начнут читать мысли друг друга одновременно... Они умрут от переполнения стека?
Stalk15
[1] Странник
    
0
Посты: 1023
Откуда: Как-бэ Новосибирск(Точно не знаю=))
Возраст: 30
12-02-2011 22:26 GMT3 часа #1434856    
fan fan
У обьекта по имени esc_stalker_nebo317047 есть преграда на пути. Тоесть у него прописаны пути, например walker, но он не может встать на этот путь, т.к перед НПС преграда. Правь координаты точек-поинтов.


Новые фишки для сталкера(см. журнал)
Arist
[1] Странник
    
0
Посты: 310
Откуда: Москва
Возраст:
12-02-2011 22:29 GMT3 часа #1434857    
erlik
Пару месяцев назад,вы мне дали изящную функцию спавна.

local tT=
{
["af_medusa"] = {-29.272364,0.230699,39.573017,63,2419},
["af_cristall_flower"] = {-27.690733,0.232351,41.362331,93,2419}
}

function SpawnArt(tT)
local sim = alife()
local vec = vector()
if tT and next(tT)~=nil then
for k, v in pairs(tT) do
sim:create(tT[k], vec:set(tT[v][1],tT[v][2],tT[v][3]),tT[v][4],tT[v][5])
end
end
end

Я вызывал её через диалог,напрямую:
<action>kfs_erste.SpawnArt</action>
Вылет:

[error]Expression : fatal error
[error]Function : CScriptEngine::lua_error
[error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
[error]Line : 73
[error]Description : <no expression>
[error]Arguments : LUA error: d:\s.t.a.l.k.e.r\gamedata\scripts\kfs_erste.script:10: bad argument #1 to 'next' (table expected, got userdata)

Может её надо вызывать по другому?


ДатчикХабара
[1] Странник
    
0
Посты: 558
Откуда: Saratov
Возраст:
12-02-2011 22:49 GMT3 часа #1434863    
Всем привет.
Сделал странствующего торговца,а вот с места он не с двигается!
Всё вроде-бы продаёт,а стоит на месте как вкопанный,а мне надо чтобы он везде шлялся,хотябы доходил до лагеря новичков.
Вот его логика:

[logic]
active = remark
trade = misc\trader_stranstv.ltx
trader_flags = 0
inv_max_weight = 10000

[remark]
meet = meet@sam


[meet@sam]
meet_state = 7|claim
meet_state_wpn = 7|claim

В чём тут может быть дело?


killer2203
[1] Странник
    
0
Посты: 55
Откуда:
Возраст: 26
12-02-2011 23:23 GMT3 часа #1434886    
Ma$ter А можно как то по другому? Я посмотрел эта прога качается долго на моем инете, и к томуже у меня инет вечно вылетает и загрузка срывается!


да, да, да!
Ma$ter
[1] Странник
    
0
Посты: 477
Откуда: Tamboff
Возраст:
12-02-2011 23:38 GMT3 часа #1434898    
killer2203
Никак иначе. Качай
ДатчикХабара
Ты же ему задал логику ремарк. Он у тебя и должен стоять как вкопанный


Знание assembler, C/C++, Pascal, Lua.
Stalk15
[1] Странник
    
0
Посты: 1023
Откуда: Как-бэ Новосибирск(Точно не знаю=))
Возраст: 30
12-02-2011 23:57 GMT3 часа #1434910    
Arist
Если вызываешь из диалога, то можно сделать так:
Код:
local tTable=
{
["af_medusa"] = {-29.272364,0.230699,39.573017,63,2419},
["af_cristall_flower"] = {-27.690733,0.232351,41.362331,93,2419}
}

function OnSpawnArt()
    SpawnArt(tTable)
end

function SpawnArt(tT)
local sim = alife()
local vec = vector()
if tT and next(tT)~=nil then
for k, v in pairs(tT) do
sim:create(tT[k], vec:set(tT[v][1],tT[v][2],tT[v][3]),tT[v][4],tT[v][5])
end
end
end

Вызывай функцию OnSpawnArt.
ДатчикХабара
Чтоб НПС ходил туда, куда надо, нужно ему прописать точки ходьбы(way_points).


Новые фишки для сталкера(см. журнал)
erlik
[10] Житель
    
0
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
13-02-2011 00:21 GMT3 часа #1434919    
Arist
В этой функции была ошибка, которую я потом поправил, но ты видимо скопировал ошибочный вариант, в котором имя таблицы совершенно некстати оказалось приписано к переменным.

Код:
function SpawnArt(tT)
local sim = alife()
local vec = vector()
if tT and next(tT) then
for k, v in pairs(tT) do
sim:create(k, vec:set(v[1],v[2],v[3]),v[4],v[5])
end
end
end



Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
aqraccy
[7] Выживший
    
0
Посты: 1455
Откуда: из Обломовки я.
Возраст: 29
13-02-2011 00:18 GMT3 часа #1434920    
Есть идеи, как сделать того или иного персонажа бессмертным? Просто надоело во время перестрелок бояться не за свою шкуру, а за шкуру квестового персонажа. Например Беса.

Очень нужно)


.— Должны были, да не приняли… Сказали, мол, раз сняли наклейку, то на глянце теперь «микроцарапины». Я обрадовался, что не «наноцарапины», и пошел домой.

Я — Обломов.

.
Gun12
[7] Выживший
    
0
Посты: 773
Откуда: СССР
Возраст: 51
13-02-2011 00:41 GMT3 часа #1434927    
aqraccy
_http://www.amk-team.ru/forum/index.php?showtopic=4188&st=40#entry386631



Там всё описано.
Цитата
Для создания бессмертного НПС надо либо поправить immunities.ltx, что с гарантией аукнется по всей игре, либо сделать копию модели, аккуратно поправить в ней #include и сделать/прописать секцию иммунитета для бессмертных

Сообщение было успешно отредактировано Gun12 (13-02-2011 00:41 GMT3 часа, назад)

Не стань номинантом премии Дарвина.
aqraccy
[7] Выживший
    
0
Посты: 1455
Откуда: из Обломовки я.
Возраст: 29
13-02-2011 00:31 GMT3 часа #1434934    
Gun12,

Спасибо за ссылку. Как я понял, мне просто нужно взять модель Беса и вписать ему нужные мне иммунитеты?


.— Должны были, да не приняли… Сказали, мол, раз сняли наклейку, то на глянце теперь «микроцарапины». Я обрадовался, что не «наноцарапины», и пошел домой.

Я — Обломов.

.
erlik
[10] Житель
    
0
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
13-02-2011 00:50 GMT3 часа #1434957    
aqraccy
Опередил меня Gun12 пока вспоминал как это делается
Я ту статью не читал, но по логике это так реализуется:
Сделай уникальный виузал на базе того, который прописан NPC и этому визуалу пропиши в модели путь до своего файла с характеристиками иммунитета.
Открой любую модель хексом и увидишь там например это: #include "gilet_mask_damage_low.ltx" Это файл из папки models в котором (помимо прочего)указана конкретная секция из файла damage.ltx
[bone_protection]
bones_protection_sect = kombez_kupol_damage -- вот это название секции
и секция из файла immunities.ltx
[immunities]
immunities_sect = high_resistance ---- и это название секции
Каждая из них отвечает за стойкость костюма к разным воздействиям.
Как делают в модах: создают в файлах immunities.ltx и damage.ltx (или даже только в одном immunities.ltx ) свои секции с нужными характеристиками. А затем создают новый файл типа "gilet_mask_bessmertie.ltx" и указывают в нем уже эти новые секции. А в модели потом меняют название файла на свое (главное чтобы кол-во символов совпадало).
И получается, что перс имеет жилетку бессмертия, непробиваемую ничем.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Arist
[1] Странник
    
0
Посты: 310
Откуда: Москва
Возраст:
13-02-2011 01:00 GMT3 часа #1434963    
erlik
Спасибо.Попробую.
aqraccy

Месяц назад в этой теме было.100% работает.
Бессмертие:
сделал так файл \Program Files\S.T.A.L.K.E.R. - Shadow of Chernobyl\gamedata\config\creatures\m_person

если нет в папке взять в распакованом оригинале

Секции [trader_immunities] и [trader_condition] конец файла должны выглядеть так различие

[trader_immunities]

burn_immunity = 0.0 ;коэффициенты иммунитета

strike_immunity = 0.0

shock_immunity = 0.0

wound_immunity = 0.0

radiation_immunity = 0.0

telepatic_immunity = 0.0

chemical_burn_immunity = 0.0

explosion_immunity = 0.0

fire_wound_immunity = 0.0

[trader_condition]

satiety_v = 0.0 ;скорость уменьшения сытости со временем

radiation_v = 2.0 ;скорость уменьшения радиации

satiety_power_v = 1.0 ;увеличение силы при уменьшении сытости

satiety_health_v = 1.0 ;увеличение здоровья при уменьшении сытости

satiety_critical = 0.0 ;критическое значения сытости (в процентах от 0..1) когда здоровье начианает уменьшаться

radiation_health_v = 0.0 ;уменьшение здоровья при воздействии радиации

morale_v = 0.0 ;скорость восстановления морали

health_hit_part = 0.001 ;процент хита, уходящий на отнимание здоровья

power_hit_part = 0.001 ;процент хита, уходящий на отнимание силы

psy_health_v = 0.1 ;скорость восстановления psy-здоровья

;открытые раны

bleeding_v = 0.0 ;потеря крови при номинальной ране в секунду

wound_incarnation_v = 3.0 ;крутизна кривой заживления (какой процент раны заживет в игровую секунду)

min_wound_size = 2.0 ;минимальный размер раны, после которого она считается зажившей

sleep_health = 1.0 ;1.5 ;коэффициенты скоростей изменения параметров во время сна

sleep_power = 1.0 ;1.5

sleep_satiety = 1.0 ;0.8

sleep_radiation = 1.0 ;1.1

sleep_psy_health = 1.0


В олспавне вместо сталкер пиши
section_name = m_barman


aqraccy
[7] Выживший
    
0
Посты: 1455
Откуда: из Обломовки я.
Возраст: 29
13-02-2011 01:00 GMT3 часа #1434966    
Цитата
# erlik :
aqraccy
Опередил меня Gun12 пока вспоминал как это делается
Я ту статью не читал, но по логике это так реализуется:
Сделай уникальный виузал на базе того, который прописан NPC и этому визуалу пропиши в модели путь до своего файла с характеристиками иммунитета.
Открой любую модель хексом и увидишь там например это: #include "gilet_mask_damage_low.ltx" Это файл из папки models в котором (помимо прочего)указана конкретная секция из файла damage.ltx
[bone_protection]
bones_protection_sect = kombez_kupol_damage -- вот это название секции
и секция из файла immunities.ltx
[immunities]
immunities_sect = high_resistance ---- и это название секции
Каждая из них отвечает за стойкость костюма к разным воздействиям.
Как делают в модах: создают в файлах immunities.ltx и damage.ltx (или даже только в одном immunities.ltx ) свои секции с нужными характеристиками. А затем создают новый файл типа "gilet_mask_bessmertie.ltx" и указывают в нем уже эти новые секции. А в модели потом меняют название файла на свое (главное чтобы кол-во символов совпадало).
И получается, что перс имеет жилетку бессмертия, непробиваемую ничем.




Да, спасибо всем и erlik в частности) Правда уже сам дотумкал и все получилось, но за старания - еще раз огромное спасибо! :)


.— Должны были, да не приняли… Сказали, мол, раз сняли наклейку, то на глянце теперь «микроцарапины». Я обрадовался, что не «наноцарапины», и пошел домой.

Я — Обломов.

.
Arist
[1] Странник
    
0
Посты: 310
Откуда: Москва
Возраст:
13-02-2011 11:32 GMT3 часа #1435063    
Stalk15
Вызываю:
<action>kfs_erste.OnSpawnArt</action>
Вылет немного другой:

[error]Expression : fatal error
[error]Function : CScriptEngine::lua_error
[error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp
[error]Line : 73
[error]Description : <no expression>
[error]Arguments : LUA error: d:\s.t.a.l.k.e.r\gamedata\scripts\kfs_erste.script:16: attempt to index field '?' (a nil value)

Ладно.Есть стандартный метод,alife():create.А насчёт торговца,чтобы он ходил,что-то в голове сидит,что ему надо ставить класс монстр.Вот только во время боя он может повести себя как монстр.


erlik
[10] Житель
    
0
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
13-02-2011 14:45 GMT3 часа #1435174    
Arist
Пользоваться этой конструкцией нужно так:
Берем эту функцию и вставляем ее в любой скриптовый файл - лучше даже в _g.script - тогда функция будет глобальной. И забываем о ней.
Код:
function Create(tT)
local sim = alife()
local vec = vector()
if tT and next(tT) then
for k, v in pairs(tT) do
sim:create(k, vec:set(v[1],v[2],v[3]),v[4],v[5])
end
end
end

Потому что далее (в любых файлах ) просто пишем функции с данными, когда нам нужно что то заспавнить. Например такую:
Код:
function SpawnArt()
local tT=
{
["af_medusa"] = {-29.272364,0.230699,39.573017,63,2419},
["af_cristall_flower"] = {-27.690733,0.232351,41.362331,93,2419},
["af_cristall_flower"] = {db.actor:position().x,db.actor:position().y,db.actor:position().z,db.actor:level_vertex_id(),db.actor:game_vertex_id()}
}
имя_файла.Create(tT)  -- если Create() находится в _g_script  то имя файла писать не нужно.
end

Вызываем уже эту функцию, а не Create() - вызывать можно откуда угодно. (исключение - из логики: для этого функцию с данными нужно в xr_effects.script писать).


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Artos
[20] Сталкер
    
0
Посты: 4176
Откуда:
Возраст: 65
13-02-2011 15:51 GMT3 часа #1435178    
Gun12
(возвращаясь в Syntax Checker'у. Еще раз Огромное спасибо!)
Наткнулся на такой факт:

строка (с явно лишим одним из символов '-' или '*' в патерне): string.match('^%s*(.-*%S)') игрою однозначно определяется как 'с ошибкой', а верификация через "Syntax Checker" проходит с 'Ok'.
Это я в задел для работы над ..., когда время будет.

Сообщение было успешно отредактировано Artos (13-02-2011 15:51 GMT3 часа, назад)

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
Gun12
[7] Выживший
    
0
Посты: 773
Откуда: СССР
Возраст: 51
13-02-2011 15:21 GMT3 часа #1435194    
Artos
Я знаю про подобную ошибку. Спасибо что заметил.
Чекер расценивает значение в скобках как строку.
Поэтому, по его разумению, всё правильно. В принципе-то так оно и есть.
Модуль по проверке стринговых операций и передаваемых аргументов я сделал сразу же после релиза этой версии.
Он не пропускает подобных ошибок.
Осталось только внедрить. Но то ли лень, то ли ... стимул короче нужен.=)


Не стань номинантом премии Дарвина.
ДатчикХабара
[1] Странник
    
0
Посты: 558
Откуда: Saratov
Возраст:
13-02-2011 15:24 GMT3 часа #1435200    
Всем привет.Вот такой вопрос.
Почему трейдер стоит как вкопанный,а не сидит на месте?
В логике я ему прописал:

[smart_terrains]
none = true

[logic]
trade = misc\trader_stranstv.ltx
inv_max_weight = 10000
active = remark
danger = danger_ignore

[remark]
anim = sit
no_move = true

[danger_ignore]
ignore_distance = 5

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


Artos
[20] Сталкер
    
0
Посты: 4176
Откуда:
Возраст: 65
13-02-2011 16:05 GMT3 часа #1435226    
ДатчикХабара
Во-первых, нафига писать пнеписям перематр(ы) (inv_max_weight), которые обрабатываются только для актора? Не фатально конечно, но стОит ли мусорить в логике ...
Во-вторых, если твой торговец сделан на базе [m_trader] а не [stalker...] - то он подчиняется схемам для монстров и никакие 'anim = sit' на него не подействуют.

Если пишешь 'С другими работает,а с этим нет' - так и приводи информацию что за 'другие' или чем от 'этого' отличается. Тут нет Кашпировских.


"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..." ©Машина времени
ДатчикХабара
[1] Странник
    
0
Посты: 558
Откуда: Saratov
Возраст:
13-02-2011 16:18 GMT3 часа #1435235    
Artos
Сделан он как обычный сталкер.:)


erlik
[10] Житель
    
0
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
13-02-2011 16:40 GMT3 часа #1435245    
Artos
Любая стандартная анимка(кроме некоторых барменовских - но они вообще не работают на любых NPC, кроме бармена) пашет на NPC -торговце. Загляни в мой журнал - в статье по анимациям у меня целый цикл анимок прописан для одного NPC (а NPC у меня был торговцем на базе stalker_trader).
-------------------------------------------
Датчик Хабара
У тебя чего написано в spawn_sections
[твой_сталкер]:stalker
или
[твой_сталкер]:stalker_trader ?
Нужно второй вариант писать.

Сообщение было успешно отредактировано erlik (13-02-2011 16:40 GMT3 часа, назад)

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Stalk15
[1] Странник
    
0
Посты: 1023
Откуда: Как-бэ Новосибирск(Точно не знаю=))
Возраст: 30
13-02-2011 16:34 GMT3 часа #1435246    
ДатчикХабара
Советну немножко:
[smart_terrains]
none = true

Ты это пишешь "вне логики". Иначе твой НПС может засосать в гулаг. Нужно писать внутри, например, так:
Код:
[logic]
trade = misc\trader_stranstv.ltx
inv_max_weight = 10000
active = remark
danger = danger_ignore

[smart_terrains]
none = true

[remark]
anim = sit
no_move = true

[danger_ignore]
ignore_distance = 5

И вообще, лучше твоего НПС привязать к точке и в этой точке прописать анимку сидения, тогда он точно будет сидеть.


Новые фишки для сталкера(см. журнал)
Arist
[1] Странник
    
0
Посты: 310
Откуда: Москва
Возраст:
13-02-2011 16:40 GMT3 часа #1435256    
erlik
Спасибо.Всё отлично работает.

Насчёт торговца.Та же проблема.Добавляю:
trade = misc\trade_limansk.ltx
и он ведёт себя.как монстр.Убираю - снова человек.Можно ли прописаить путь к файлу торговли по другому.


ДатчикХабара
[1] Странник
    
0
Посты: 558
Откуда: Saratov
Возраст:
13-02-2011 17:09 GMT3 часа #1435281    
erlik
and
Stalk15
СПС!От души.
Было написано просто сталкер,теперь сталкер_трейдер.
+Переделал логику,не знай поможет.


Silver Raven
[7] Выживший
    
0
Посты: 415
Откуда:
Возраст:
13-02-2011 17:47 GMT3 часа #1435293    
Никто не сталкивался с такой ошибкой при компиляции аллспавна:

unknown section 'af_slots_spawn'

Died at stkutils/ini_file.pm line 200


Что за секция af_slots_spawn? У меня нет ничего похожего...

И за что отвечает строка 200
Код:
sub value {
my $self = shift;
my ($section, $name) = @_;

if (!defined($self->{sections_hash}{$section}))
{
print "unknown section '" .$section. "'\n";
}
die unless defined $self->{sections_hash}{$section}; -- это что?
return $self->{sections_hash}{$section}{$name};
}

1;
в ini_file.pm?

З.Ы. (флуд) Господи, за что мне все это...


erlik
[10] Житель
    
0
Посты: 2338
Откуда: Набережные Челны
Возраст: 47
13-02-2011 17:48 GMT3 часа #1435296    
Artos
Ну тут и я ошибся - то что невнимательно прочитал пост, но и ты зря ДатчикаХабара в "сумнения" вводил - большинство ведь наследование от m_trader не делает (так как большинство ориентируется на статьи на вики), и, в основном, все указывают своим торговцам секцию stalker_trader - и следовательно никаких проблем с анимками тут быть не может.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"


Форумы > Архив > Свалка > Модификации ТЧ, вопросы и ответы (старое, по 14.06.11)

Страница 8 из 63Первая«567891011 »Последняя

Эта тема закрыта, публикация новых сообщений недоступна.

Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для
просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.

Использование материалов сайта возможно с разрешения администрации. Все права защищены. © 2004–2024 «Stalker-Portal.ru»