ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 27.11.2019

Просмотров: 2754

Скачиваний: 36

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

Страница 51

Как сделать сетку в русофицированном фотошопе,для того что бы прописать иконку?

Прошу описать пошагово.
На старом сайте было,теперь приходится задавать вопрос заново.
Чтобы включить её отображение, зайдите в меню:
Редактирование -> Установки -> Направляющие, сетка и фрагменты
И установите в нем следующие значения:
Линия через каждые: 50
Единицы измерения: пиксели
Внутреннее деление на: 1
После чего выберите пункт:
Просмотр -> Показать -> Сетку ( Ctrl+' )

Изменение иконок предметов

Разберем изменение файла:

...\gamedata\textures\ui\ui_icon_equipment.dds

Нам понадобится следующее:
    * Adobe Photoshop (я использовал CS2, CS и 7.0 различаются незначительно)
    * плагин для работы с .dds-изображениями (скачать) 
Итак, мы установили плагин и запустили Photoshop. Откройте в нем наш файл.
Иконки расположены по сетке 50х50 пикселей.
Чтобы включить её отображение, зайдите в меню:
Редактирование -> Установки -> Направляющие, сетка и фрагменты
И установите в нем следующие значения:
    * Линия через каждые: 50
    * Единицы измерения: пиксели
    * Внутреннее деление на: 1 
После чего выберите пункт:
Просмотр -> Показать -> Сетку ( Ctrl+' )
Всё, сетка теперь правильно настроена и отображается. Выберем место для иконки.

Теперь соответственно иконке изменим и альфа-канал.
Выделим иконку оружия, и перейдем в окне со слоями на закладку:
Каналы -> Alpha
После чего залейте выделение белым. Всё, мы сделали иконке альфа-канал.
Теперь нужно сохранить файл в правильном формате. Выберите:
Файл -> Сохранить
И выставьте в появившемся окне окне следующие настройки:
Крайне важно выставить следующие параметры:

где первое и второе числа задают диапазон случайной переменной в часах отвечающей за 
респаун.

Внимание! Данный урок предполагает наличие у вас базовых навыков работы в Photoshop. 
Детальный пошаговый разбор работы в Photoshop в данном уроке производится не будет.

Он содержит иконки предметов, отображаемые в инвентаре. Допустим, вы сделали новый 
вид оружия, и хотите присвоить ему новую иконку.

Иконка будет размером 4х2, то есть 200х100 пикселей - это обычный размер иконки для ав-
томатических винтовок. Нарисуем её:
Иконка АК47У была нарисована следующим образом: я нашел качественную фотографию с 
однородным фоном (благо, фотографий АК в интернете немерено), открыл её в Photoshop, 
выделил с помощью второго вида инструмента "Лассо", нажал Ctrl+C, открыл файл с иконка-
ми, нажал Ctrl+V, нажал Ctrl+T, зажал Shift ("Сохранение пропорций") и потянул за край вы-
деления, сжимая изображение до нужного размера.
После чего применил трансформацию, перетащил изображение на нужное место и нажал 
Shift+Ctrl+E ("Слить слои").


background image

Страница 52

    * Save Format: DXT5 (Interpolated Alpha)
    * MIP maps: No MIP maps 
Нажмите Save. Вот всё, мы добавили новую иконку.
Теперь присвоим её предмету.

gamedata\config\weapons\w_ak47u.ltx

И найдем такие строки:
inv_grid_width                    4
inv_grid_height                         = 2   
inv_grid_x                        …
inv_grid_y                        …
Где:
    * inv_grid_width - ширина в сетке 50х50
    * inv_grid_height - высота в сетке 50х50
    * inv_grid_x - местонахождение по х
    * inv_grid_y - местонахождение по y 

Изменение текстур моделей

И отредактируем его по своему усмотрению:

Выделяем элементы синего цвета, закрашиваем выделение зеленым, идем дальше.

    * Save Format: DXT5 (Interpolated Alpha)
    * MIP maps: Generate MIP maps 
Создание новых visual для использования с новыми объектами

В начале файла вы увидите имя текстуры:
item\item_drink_nonstop
Изменим эту строку на:
item\item_drink_green_1

Всё, теперь вы можете указать в конфиге своего нового предмета новый visual:
[energy_drink_green]:vodka
$spawn                         = "food and drugs\energy_drink"
inv_name                      = energy_drink_green_name
inv_name_short             = energy_drink_green_short_name
visual                           = '''equipments\drink_green.ogf''' ;equipments\drink_stalker.ogf
description                   = enc_equipment_energy_drink_green
Cost                             = 75

Допустим, у вы создали некий wpn_ak47u, которому и нарисовали иконку. Зайдем в его кон-
фиг:

Заменим, например, текстуру банки с энергетиком. Для этого откроем файл 

item_drink_nonstop.dds:

Банка была перерисована через выделение элементов с помощью "Лассо" (в варианте с 
проставлением углов, а не непрерывного выделения - кажется, это называется "Геометриче-
ское лассо", если не так - поправьте), с последующим их закрашиванием зеленой кистью.

В конце инструментом "Текст" (иконка в виде буквы "Т") и шрифтом Space Age (не суть важ-
но) была сделана надпись. После чего я нажал Ctrl+T ("Свободная трансформация"), повер-
нул текст набок, и применил трансформацию, выбрав любой другой инструмент.
Не забываем на всякий случай сохранить резервную копию текстуры. Делаем Save со сле-
дующими параметрами:

К чему изменять текстуры обычных предметов, лучше сделать свои - с собственной внешно-
стью. Сделаем новый visual (модель+текстура), который можно будет указать в свойствах 
нового предмета.
Возьмем модель банки энергетика drink_nonstop.ogf, сделаем её копию и назовем, скажем, 
drink_green.ogf, после чего откроем в Hex-редакторе (в принципе, можно и Блокнотом). Метод 
кустарный, но работающий.

Внимание! Очень важно, чтобы длина строки с текстурой осталась той же, иначе файл не бу-
дет работать.


background image

Страница 53

[...]

[bloodsucker_immunities_weak]
....

Health не трож, так как от нее толку очень мало.

[m_bloodsucker_damage]
;bone_name = <hit_scale>,-1,<wound_scale>
;<hit_scale> - коэфф. изменения хита (уменьшения здоровья)
;<wound_scale> - коэфф. изменения величины открытой раны
default = 0.5, -1, 0.5
bip01_spine = 0.5, -1, 0.5
bip01_spine1 = 0.5, -1, 1.0
bip01_spine2 = 0.5, -1, 1.0
bip01_spine3 = 0.5, -1, 1.0
....
Чем больше здесь первый параметр тем уязвимее это место у данного мутанта.

с определенным ID или определенные классы монстров?

function se_monster:on_register()
cse_alife_monster_base.on_register( self )
--'self:fill_exclusives()
--' Нарисовать мапспот с собой
if self:alive() and sim_statistic.show_monster_spot == true then
local community, rank = sim_statistic.getNpcType(self)
level.map_add_object_spot_ser(self.id, "alife_presentation_monstr", self:name().." "..community)
end
end
--------------------
function se_monster:on_unregister()
cse_alife_monster_base.on_unregister( self )

--' Убрать мапспот с собой
if sim_statistic.show_monster_spot == true then
local community, rank = sim_statistic.getNpcType(self)
level.map_remove_object_spot(self.id, "alife_presentation_monstr")
end

smart_terrain.unregister_npc(self)

гемдата\скриптс\amk_uniq_news_lists

 - 

атмосферные новости

В папке 

gamedata\config\creatures лежат файлы m_*.ltx

 

для каждого монстра.

В этих файлах есть по три секции типа weak, normal и strong. В каждой из этих секций есть 
подсекция которая отвечает за иммунитет монстра данного типа, к примеру вот:

fire_wound_immunity = 0.18 - так вот чем больше значение этого параметра, тем легче убить 
мутанта из огнестрельного оружия.
Эти значания есть коэффициенты на которые множиться урон нанесенный данному обьекту. 
Тоесть можно ставить и больше чем единица.

Еще есть один способ ослабить монстров, это изменить им damage. Вот например damage 
кровососа:

Как на существо с определённым ID повесить метку на миникарте? Задолбали 
контролёры с их вылетом...

вот какая функция есть в 

se_monster.script 

- но она отмечает ВСЕХ монстров? если же поста-

вить условие на определенный класс - то можно видеть только тех кого нужно.


background image

Страница 54

end
--------------------
function se_monster:on_death(killer)
cse_alife_monster_base.on_death(self, killer)

--' Убрать мапспот с собой
if sim_statistic.show_monster_spot == true then
local community, rank = sim_statistic.getNpcType(self)
level.map_remove_object_spot(self.id, "alife_presentation_monstr")
end
end

Эффект выжигатея заменяющий шейдер плохого ПНВ в Priboj Stori.

Замени все в секции на effector_nightvision_bad:
[effector_nightvision_bad]
pp_eff_name = psy_antenna.ppe
self.base_amplitude = color(0.2,0.15,0.0)
pp_eff_cyclic = 1
blur = 5
gray = 0 ;.9
noise = 0 ;.5
noise_scale = 0
noise_color = 0.535, 0.493, 0.389, 0
self.gray_color = 0.535, 0.493, 0.389
self.base_color = 0.535, 0.493, 0.389

Как поменять скорость течения времени в игре?

time_factor = 10; 1; ;396.0;скорость для демонстрации смены дня и ночи
...
Как я понимаю надо начинать новую игру ?

А как уже имеющемуся НПС заспавнить что-то в инвентарь. Это реально?

Пожалуйста. Спавн Сига и патронов в инвентарь Волка:
Код
local npc,obj
    for i=0,65534 do -- перебираем онлайн-объекты
        npc = level.object_by_id(i)
        if npc and npc:name() == "esc_wolf" then -- если объект(непись) существует
                                                  -- и его имя такое-то
            obj = alife():object(npc:id()) -- определяем его по id
        end
    end
    alife():create("wpn_sig550", -- ну, и спавним предметы, какие надо...
    obj.position,
    obj.m_level_vertex_id,
    obj.m_game_vertex_id,
    obj.id) -- ему в инвентарь
    alife():create_ammo("ammo_5.56x45_ss190", -- патроны, какие надо...

Файл: "c:\Program Files\GSC World 
Publishing\S.T.A.L.K.E.R\gamedata\config\misc\postprocess.ltx"

Нашёл в 

alife.ltx

. такие строчки

Все правильно - если поменять time_factor на 5 - время будет идти в два раза медленнее. 
Больше ничего менять кажется не надо. Новую игру начинать не обязательно - скорость вре-
мени изменится если поспать.


background image

Страница 55

    obj.position,
    obj.m_level_vertex_id,
    obj.m_game_vertex_id,
    obj.id, -- ему в инвентарь
    30)

obj = alife():object(npc.id)
Если известен story_id - тоже перебирать не надо.

Например, спавн тушканов в лагере новичков, на дороге напротив костра:

Код:
amk.spawn_item("m_tushkano_e",vector():set(-206,-20.5,-145),61,46567)
amk.spawn_item("m_tushkano_normal",vector():set(-206,-20.5,-145),61,46567)
amk.spawn_item("tushkano_normal",vector():set(-206,-20.5,-145),61,46567)
-- или
alife():create("m_tushkano_e",vector():set(-206,-20.5,-145),46567,61)
alife():create("m_tushkano_normal",vector():set(-206,-20.5,-145),46567,61)
alife():create("tushkano_normal",vector():set(-206,-20.5,-145),46567,61)

а если напрямую использовать глобальную функцию alife(), то наоборот (46567,61).
Аналогично, если вы будете привязывать координаты к координатам актора.

level.map_add_object_spot_ser(npc.id, "blue_location","Волк")
или
level_tasks.add_location(npc.id, "blue_location","Волк")
treasure - Иконка тайника
green_location - Зеленая стандартная пометка квестов
blue_location - Кружок с человечком
crlc_big - Большой круг типа где-то тут...
crlc_mdl - Средний круг
crlc_small - Маленький круг
alife_presentation_monstr - Большая белая точка

По поводу спавна...

if level == "l01_escape" then

Если непись был только что заспавнен, то ещё легче - перебор делать не надо, сразу полу-
чаем его как объект, а по id его определяем сдедующим образом:

PS у меня не получается таким образом заспавнить более одной пачки патронов, чтобы 
было больше, надо ещё раз писать полностью: alife():create_ammo и т.д.

Во-первых, обратите внимание, что амк-шной функции spawn_item сначала ставится 
гейм_вертекс, а потом левел_вертекс (61,46567),

Во-вторых, спавн монстров происходит, когда от актора до места спавна 50 метров и 
больше. То есть, если спавните рядом с актором, то надо отойти от этого места на 50 метров 
и монстры появятся или спавнить сразу на расстоянии. Если спавн происходит за расстояни-
ем а-лайфа или вообще на другой локации, то монстры будут в офлайне, пока актор не при-
близится к ним на расстояние а-лайфа.

А как сделать чтобы метку на волка поставить? А лучше не на Волка а какого-нибудь 
обычного непися? И еще, если я хочу привязать свой спаун к заходу на локацию, 
например зашел гг на локацию кордон и чтобы нужные мне неписи спавнились каждый 
раз при заходе на кордон. Где мне нужно создать инфопоршень?

По поводу метки... Получить Волка как объект (npc - см. моё предыдущее сообщение) и по-
ставить на него метку:

При загрузке уровня происходит спавн актёра и перевод его в онлайн, вызывается function 
actor_binder:net_spawn(data) (файл bind_stalker), соответственно, поместить сюда вызов ва-
шей функции спавна, в которой перед спавном предмета проверять имя локации: