ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 27.11.2019
Просмотров: 2754
Скачиваний: 36
Страница 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 ("Слить слои").
Страница 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-редакторе (в принципе, можно и Блокнотом). Метод
кустарный, но работающий.
Внимание! Очень важно, чтобы длина строки с текстурой осталась той же, иначе файл не бу-
дет работать.
Страница 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
- но она отмечает ВСЕХ монстров? если же поста-
вить условие на определенный класс - то можно видеть только тех кого нужно.
Страница 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 - время будет идти в два раза медленнее.
Больше ничего менять кажется не надо. Новую игру начинать не обязательно - скорость вре-
мени изменится если поспать.
Страница 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), соответственно, поместить сюда вызов ва-
шей функции спавна, в которой перед спавном предмета проверять имя локации: