CoP: Ещё один спальный мешок — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
Adarkman (обсуждение | вклад) (Новая страница: «Всем привет. В статье CoP. Создание спального мешка описан хороший метод создания спальни...») |
(оформление) |
||
Строка 24: | Строка 24: | ||
== Общий принцип == | == Общий принцип == | ||
− | Мы унаследуем спальник не от identity_immunities, а от бинокля. Что получится: | + | Мы унаследуем спальник не от ''identity_immunities'', а от бинокля. Что получится: |
#спальник нельзя будет перетащить в слот быстрого доступа - нет краша | #спальник нельзя будет перетащить в слот быстрого доступа - нет краша | ||
#спальник будет срабатывать не при «использовании» (не будет такого пункта в меню), а при выбрасывании его из инвентаря и после сна его нужно будет подобрать обратно, что IMHO реалистичнее | #спальник будет срабатывать не при «использовании» (не будет такого пункта в меню), а при выбрасывании его из инвентаря и после сна его нужно будет подобрать обратно, что IMHO реалистичнее | ||
== Конфиги == | == Конфиги == | ||
− | В configs\misc\items.ltx дописываем: | + | В '''configs\misc\items.ltx''' дописываем: |
− | < | + | <ini> |
------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ||
-- Спальный мешок | -- Спальный мешок | ||
Строка 77: | Строка 77: | ||
quest_item = false | quest_item = false | ||
− | </ | + | </ini> |
'''Важно''': visual ДОЛЖЕН существовать. OGF модели спальника можно найти в сети. | '''Важно''': visual ДОЛЖЕН существовать. OGF модели спальника можно найти в сети. | ||
== Скрипты == | == Скрипты == | ||
− | В scripts создаём sleeping_bag.script | + | В scripts создаём '''sleeping_bag.script''' |
− | < | + | <lua> |
function use(s_obj) | function use(s_obj) | ||
if nil == s_obj then | if nil == s_obj then | ||
Строка 101: | Строка 101: | ||
end | end | ||
end | end | ||
− | </ | + | </lua> |
− | В bind_stalker.script в actor_binder:on_item_drop прописываем | + | В '''bind_stalker.script''' в ''actor_binder:on_item_drop'' прописываем |
− | < | + | <lua> |
function actor_binder:on_item_drop (obj) | function actor_binder:on_item_drop (obj) | ||
if(obj) then | if(obj) then | ||
Строка 110: | Строка 110: | ||
end | end | ||
end | end | ||
− | </ | + | </lua> |
− | В configs\text\rus\st_items_equipment.xml добавляем | + | В '''configs\text\rus\st_items_equipment.xml''' добавляем |
− | < | + | <xml> |
<string id="st_sleeping_bag_title"> | <string id="st_sleeping_bag_title"> | ||
<text>«Спальный мешок»</text> | <text>«Спальный мешок»</text> | ||
Строка 119: | Строка 119: | ||
<text>Непромокаемый спальный мешок. Один из способов переночевать в Зоне. Но от радиации не спасёт, поэтому для ночевки нужно искать места по-укромнее. Например такие, где можно переждать выброс.</text> | <text>Непромокаемый спальный мешок. Один из способов переночевать в Зоне. Но от радиации не спасёт, поэтому для ночевки нужно искать места по-укромнее. Например такие, где можно переждать выброс.</text> | ||
</string> | </string> | ||
− | </ | + | </xml> |
− | В configs\text\rus\ui_st_screen.xml добавляем | + | В '''configs\text\rus\ui_st_screen.xml''' добавляем |
− | < | + | <xml> |
<string id="st_sleeping_bag_no_sleep"> | <string id="st_sleeping_bag_no_sleep"> | ||
<text>В этом месте не заснуть. Нужно найти более надежное укрытие, там где можно переждать выброс.</text> | <text>В этом месте не заснуть. Нужно найти более надежное укрытие, там где можно переждать выброс.</text> | ||
Строка 128: | Строка 128: | ||
<text>%c[255,255,255,0]Не забудьте забрать спальный мешок.%c[default]</text> | <text>%c[255,255,255,0]Не забудьте забрать спальный мешок.%c[default]</text> | ||
</string> | </string> | ||
− | </ | + | </xml> |
− | В configs\gamepley\character_desc_general.xml ищем в самом начале | + | В '''configs\gamepley\character_desc_general.xml''' ищем в самом начале |
− | < | + | <xml> |
<!-- --> | <!-- --> | ||
<!-- Actor --> | <!-- Actor --> | ||
Строка 149: | Строка 149: | ||
helm_respirator \n | helm_respirator \n | ||
stalker_outfit \n | stalker_outfit \n | ||
− | </ | + | </xml> |
и добавляем | и добавляем | ||
<code> | <code> | ||
sleeping_bag \n | sleeping_bag \n | ||
</code> | </code> | ||
− | В configs\mp\mp_ranks.ltx ищем | + | В '''configs\mp\mp_ranks.ltx''' ищем |
− | < | + | <ini> |
[rank_0] | [rank_0] | ||
rank_name = st_rank_novice ; звание | rank_name = st_rank_novice ; звание | ||
Строка 162: | Строка 162: | ||
;----------------- new items ------------------------- | ;----------------- new items ------------------------- | ||
available_items = | available_items = | ||
− | </ | + | </ini> |
− | И в конце длиннющей строки | + | И в конце длиннющей строки ''available_item''s через запятую добавляем ''sleeping_bag'' |
Запускаем новую игру и тестируем | Запускаем новую игру и тестируем |
Версия 14:56, 31 июля 2013
Всем привет. В статье CoP. Создание спального мешка описан хороший метод создания спальника. К сожалению полученный спальник имеет существенный недостаток - если перетащить его в слот быстрого доступа (который F1-F4), то игра вылетает (проверялось на версии 1.6.02). Есть два метода борьбы с этим:
1. В описании спальника поменять
inv_grid_width = 2
inv_grid_height = 2
на
inv_grid_width = 1
inv_grid_height = 1
и соответственно перерисовать его иконку, но иконка 1х1 для спальника в инвентаре будет выглядеть неприглядно
2. Создать спальник работающий на другом принципе
О втором методе и пойдйт речь.
Содержание
Общий принцип
Мы унаследуем спальник не от identity_immunities, а от бинокля. Что получится:
- спальник нельзя будет перетащить в слот быстрого доступа - нет краша
- спальник будет срабатывать не при «использовании» (не будет такого пункта в меню), а при выбрасывании его из инвентаря и после сна его нужно будет подобрать обратно, что IMHO реалистичнее
Конфиги
В configs\misc\items.ltx дописываем:
------------------------------------------------------------------------------------------------ -- Спальный мешок ------------------------------------------------------------------------------------------------ [sleeping_bag]:wpn_binoc ;identity_immunities GroupControlSection = spawn_group discovery_dependency = $spawn = "devices\sleeping_bag" $prefetch = 32 class = WP_BINOC cform = skeleton visual = dynamics\equipments\item_spalnik inv_name = st_sleeping_bag_title inv_name_short = st_sleeping_bag_title description = st_sleeping_bag_descr use_sound = interface\bag_open inv_weight = 0.5 inv_grid_width = 2 inv_grid_height = 2 inv_grid_x = 25 inv_grid_y = 0 cost = 0 eat_health = 0 eat_satiety = 0 eat_power = 0 eat_radiation = 0 wounds_heal_perc = 0 eat_portions_num = 1 slot = -1 hit_power = 0 hit_type = fire_wound ammo_class = ammo_9x19_fmj scope_status = 0 silencer_status = 0 grenade_launcher_status = 0 animation_slot = 13 rpm = 0 cam_dispersion = 0 fire_dispersion_base = 0 hit_power_critical = 0 hud = wpn_vodka_hud can_trade = false random_sleep_a = 2 random_sleep_b = 6 quest_item = false
Важно: visual ДОЛЖЕН существовать. OGF модели спальника можно найти в сети.
Скрипты
В scripts создаём sleeping_bag.script
function use(s_obj) if nil == s_obj then return end if surge_manager.actor_in_cover() then ui_sleep_dialog.sleep() give_info("sleep_active") else news_manager.send_tip(db.actor, game.translate_string("st_sleeping_bag_no_sleep")) end news_manager.send_tip(db.actor, game.translate_string("st_sleeping_bag_take_reminder")) end function use_inventory_item(s_obj) if s_obj and s_obj.section_name and s_obj:section_name() == "sleeping_bag" then use(s_obj) end end
В bind_stalker.script в actor_binder:on_item_drop прописываем
function actor_binder:on_item_drop (obj) if(obj) then local s_obj = alife():object(obj:id()) sleeping_bag.use_inventory_item(s_obj) end end
В configs\text\rus\st_items_equipment.xml добавляем
<string id="st_sleeping_bag_title"> <text>«Спальный мешок»</text> </string> <string id="st_sleeping_bag_descr"> <text>Непромокаемый спальный мешок. Один из способов переночевать в Зоне. Но от радиации не спасёт, поэтому для ночевки нужно искать места по-укромнее. Например такие, где можно переждать выброс.</text> </string>
В configs\text\rus\ui_st_screen.xml добавляем
<string id="st_sleeping_bag_no_sleep"> <text>В этом месте не заснуть. Нужно найти более надежное укрытие, там где можно переждать выброс.</text> </string> <string id="st_sleeping_bag_take_reminder"> <text>%c[255,255,255,0]Не забудьте забрать спальный мешок.%c[default]</text> </string>
В configs\gamepley\character_desc_general.xml ищем в самом начале
<!-- --> <!-- Actor --> <!-- --> <specific_character id="actor" no_random = "1"> <name>st_actor_name</name> <icon>ui_inGame2_Hero</icon> <map_icon x="2" y="5"></map_icon> <team>Actor</team> <supplies> [spawn] \n device_torch \n wpn_binoc \n wpn_knife = 1 \n detector_simple \n helm_respirator \n stalker_outfit \n
и добавляем
sleeping_bag \n
В configs\mp\mp_ranks.ltx ищем
[rank_0] rank_name = st_rank_novice ; звание rank_exp = 0, 0 ; опыт, артефакты rank_diff_exp_bonus = 1, 1.5, 2, 3, 4 ;----------------- new items ------------------------- available_items =
И в конце длиннющей строки available_items через запятую добавляем sleeping_bag
Запускаем новую игру и тестируем