SoC. Не бесконечные болты
Материал из S.T.A.L.K.E.R. Inside Wiki
Итак тут я опишу как реализовать болты которые будут заканчиваться. Сразу пишу о том, что будем делать основываясь на гранатах, то есть не исключено, что болт может рвануть (не нанеся урон и только через продолжительный участок времени, так что гг навряд ли будет по близости.), а также, если бросим болт под ноги НПСу, он шуганётся, как от грены (это на самом деле не плохо, если отключены глаза на затылке, можно попробовать их таким образом отвлечь).
Итак, приступим.
Нам потребуются такие файлы:
gamedata\config\weapons\w_rgd5.ltx
gamedata\config\weapons\w_bolt.ltx
gamedata\config\misc\items.ltx
gamedata\scripts\escape_dialog.script
gamedata\scripts\bind_stalker.script
В первую очередь лезем в файл w_bolt.ltx, там самая первая строка, которая за что-то отвечает:
[bolt]:identity_immunities
Меняем её вот так:
[old_bolt]:identity_immunities
Сохраняем и закрываем. Затем, открываем файл w_rgd5.ltx, спускаемся в самый низ и пишем это:
[bolt]:grenade_rgd5 visual = weapons\bolt\wpn_bolt.ogf inv_name = "Болт" inv_name_short = "Болт" inv_weight = 0.05 cost = 1 slot = 5 hud = bolt_hud2 ef_weapon_type = 1 description = "Обычный металлический болт" destroy_time = 5000000;3500 attach_position_offset = -0.021,-0.075,0.0 attach_angle_offset = 0,0,0 attach_bone_name = blast = 0 blast_r = 0 blast_impulse = 0 ;delete blast_impulse_factor = 1 frags = 0 frags_r = 0 frag_hit = 0 frag_hit_impulse = 0 ;звуки snd_explode = monsters\biting\def_0 ;rgd5_explode snd_checkout = monsters\biting\def_0 explode_particles = weapons\wg-hit-ground inv_grid_width = 1 inv_grid_height = 1 inv_grid_x = 22 inv_grid_y = 6 light_color = 0.0,0.0,0.0 light_range = 0.0 light_time = 0.0 [bolt_hud2] fire_point = 0.05, 0.0, 0.1 fire_bone = bolt_0 orientation = 0,0,0 position = 0,0,0 visual = weapons\bolt\wpn_bolt_hud.ogf throw_point = 0,0.4,0.3 throw_dir = 0,0,0 anim_show = draw3 anim_hide = holster_0 anim_idle = idle_0 anim_playing = idle_01 anim_throw_begin = attack_0_begin anim_throw_idle = attack_0_idle anim_throw_act = attack_0_act anim_throw_end = attack_0_end
Подробно:
[bolt]:grenade_rgd5 ;--секция с отсылкой на секцию grenade_rgd5 visual = weapons\bolt\wpn_bolt.ogf ;--визуал, в данном случае модель болта inv_name = "Болт" ;--название inv_name_short = "Болт" ;--название болта лежащего на земле inv_weight = 0.05 ;�ӧ֧� cost = 1 ;цена за штуку slot = 5 ;--��ݧ�� �էݧ� �ҧ�ݧ��� hud = bolt_hud2 ;--����ݧܧ� �ߧ� ���� ef_weapon_type = 1 ;��ڧ� ����اڧ� (�ߧ� �ާ֧ߧ��� �ߧ� �� �ܧ�֧� ��ݧ��ѧ�, �ާ�اߧ� ��ݧ�ާѧ�� �էӧڧԧݧ�) description = "���ҧ��ߧ�� �ާ֧�ѧݧݧڧ�֧�ܧڧ� �ҧ�ݧ�" ;--���ڧ�ѧߧڧ� ���֧էާ֧�� destroy_time = 5000000;3500 ;�ݧ���� ����ѧӧڧ�� �ܧѧ� �֧���, �� ��ѧ� ���� �ӧ�֧ާ� ��֧�֧� �ܧ������ �ҧ�ݧ� �����ѧէק� attach_position_offset = -0.021,-0.075,0.0 attach_angle_offset = 0,0,0 attach_bone_name = blast = 0 ;�ާ��ߧ���� �ӧ٧��ӧ�, ��ѧ� �ܧѧ� ���� �ҧ�ݧ�, ������ �ҧ�է֧� 0 blast_r = 0 ; ��ѧէڧ�� �ӧ٧��ӧ� blast_impulse = 0 ;�ڧާ��ݧ�� ��� �ӧ٧��ӧ� (����ѧاѧ֧��� �ߧ� �էѧݧ�ߧ���� ���ݧק�� ����� ��� �ާ֧��� �ӧ٧��ӧ�) ;delete blast_impulse_factor = 1 frags = 0 ;�ܧ��-�ӧ� ���ܧ�ݧܧ�� frags_r = 0 ; ��ѧէڧ�� ��ѧ٧ݧק�� ���ܧ�ݧܧ�� frag_hit = 0 ; ����� ��� 1 ����ѧӧ�֧ԧ� ���ܧ�ݧܧ� frag_hit_impulse = 0 ; �ڧާ��ݧ�� ��� 1 ����ѧӧ�֧ԧ� ���ܧ�ݧܧ� ;�٧ӧ�ܧ� snd_explode = monsters\biting\def_0 ;rgd5_explode �٧ӧ�� �ӧ٧��ӧ� snd_checkout = monsters\biting\def_0 ;�٧ӧ�� �ҧ���ܧ� explode_particles = weapons\wg-hit-ground ; ��ѧ��ڧܧ� �ӧ٧��ӧ� (�� �էѧߧߧ�� ��ݧ��ѧ� �����ѧӧݧ֧� ��ѧ��ڧܧ� �ߧڧ�֧ԧ� �ߧ� ���ܧѧ٧�ӧѧ��ڧ�) inv_grid_width = 1 inv_grid_height = 1 inv_grid_x = 22 inv_grid_y = 6 light_color = 0.0,0.0,0.0 ;��ӧ֧� ���ӧ֧�֧ߧڧ� �ӧ� �ӧ�֧ާ� �ӧ٧��ӧ� ��� RGB light_range = 0.0 ;�ߧѧ���֧ߧߧ���� �ߧ� ��ܧ�ݧ�ܧ� �� ���ߧڧާѧ� light_time = 0.0 ;�ӧ�֧ާ� ���է�ӧ֧�ܧ� [bolt_hud2] ;��֧ܧ�ڧ� ���է� fire_point = 0.05, 0.0, 0.1 fire_bone = bolt_0 orientation = 0,0,0 position = 0,0,0 visual = weapons\bolt\wpn_bolt_hud.ogf ;���ڧ٧�ѧ� �ҧ�ݧ�� �� ���ܧѧ� �ԧ� throw_point = 0,0.4,0.3 throw_dir = 0,0,0 anim_show = draw3 anim_hide = holster_0 anim_idle = idle_0 anim_playing = idle_01 anim_throw_begin = attack_0_begin anim_throw_idle = attack_0_idle anim_throw_act = attack_0_act anim_throw_end = attack_0_end
�����, �����ѧߧ�֧�, �٧ѧܧ��ӧѧ֧�. ������ ��ѧۧ� �ߧѧ� �ҧ�ݧ��� �ߧ� �ߧ�ا֧�. ���֧�֧�� �ݧ֧٧֧� �� ��ѧۧ� items.ltx �� �� �ܧ�ߧ֧� ��ڧ�֧�:
[bolt_box]:identity_immunities GroupControlSection = spawn_group discovery_dependency = $spawn = "food and drugs\kolbasa" ;$prefetch = 32 class = II_FOOD cform = skeleton visual = physics\box\box_metall_01.ogf radius = 1 ;script_binding = escape_dialog.use_snd inv_name = "������ҧܧ� �ҧ�ݧ���" inv_name_short = "������ҧܧ� �ҧ�ݧ���" description = "������ҧܧ� �� �ҧ�ݧ�ѧާ�, ���է֧�اڧ� �� ��֧ҧ� 25 �ҧ�ݧ���." inv_weight = 1.35 can_trade = on inv_grid_width = 2 inv_grid_height = 1 inv_grid_x = 8 inv_grid_y = 18 cost = 30 ; eatable item eat_health = 0 eat_satiety = 0 eat_power = 0 eat_radiation = 0 wounds_heal_perc = 0 eat_portions_num = -1 ; food item slot = 4 animation_slot = 4 ;hud item hud = wpn_vodka_hud attach_angle_offset = 0.440521, 1.378287, -0.644026 attach_position_offset = 0.104196, -0.010821, 0.076969 attach_bone_name = bip01_r_hand auto_attach = false // should be deleted after update bone_name = bip01_r_hand position_offset = 0.0,0.0,0.0 angle_offset = 1.570790,1.570790,3.92699
������ѧߧ�֧�, �٧ѧܧ��ӧѧ֧�. ���ѧݧ��� �ާ� �է�ݧاߧ� ���ܧ���� ��ѧۧ� escape_dialog.script �� �ܧ�ߧ֧� ��ѧۧݧ� �ӧߧ֧�ק� ��ӧ�� ���ߧܧ�ڧ�:
function use_bolt_box_oz(obj) if obj ~= nil then if obj:section() == "bolt_box" then for i = 1, 25 do --����ӧ֧��ѧ֧� ���ѧӧ� 25 ��ѧ� alife():create("bolt", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) end end end end
����է��ҧߧ�:
function use_bolt_box_oz(obj) --���ߧܧ�ڧ� �� �ߧѧ٧ӧѧߧڧ֧� use_bolt_box_oz(obj) if obj ~= nil then if obj:section() == "bolt_box" then -- ��ҧ�֧ܧ� �ܧ������ �է�ݧاߧ� �ާ� �ڧ���ݧ�٧�ӧѧ�� (�ܧ���ҧܧ� �ҧ�ݧ���) for i = 1, 25 do --����ӧ֧��ѧ֧� ���ѧӧ� 25 ��ѧ� alife():create("bolt", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- ���ѧӧ� �ҧ�ݧ�� �� �ڧߧӧ֧ߧ�ѧ�� �ԧ� end -- ��ܧ�ߧ�ѧߧڧ� ��ڧܧݧ� for i =... end --��ܧ�ߧ�ѧߧڧ� if end --��ܧ�ߧ�ѧߧڧ� if end --��ܧ�ߧ�ѧߧڧ� ���ߧܧ�ڧ�
�� ����� �ا� ��ѧۧݧ� �ߧѧ��էڧ� ���ߧܧ�ڧ� give_weapon_to_actor �� �ӧߧ��ڧ� ��ѧܧڧ� ������ܧ� ��֧�֧� end:
dialogs.relocate_item_section(trader, "bolt_<a href="http://cityadspix.com/tsclick-MIQCWPUV-GECAQBFF?url=http%3A%2F%2Fwww.sotmarket.ru%2Fproduct%2Fdls-m112-in-box.html&sa=mh&sa1=&sa2=&sa3=&sa4=&sa5=&bt=20&pt=9<=2&tl=3&im=ODI1LTAtMTQyNjE0ODU5Ni0xMzA1OTUyMA%3D%3D&fid=NDQ1NzU2Nzc1&prdct=043406310234013604&kw=box%22%2C%20%22in" target="_blank" alt="M112 in box" title="M112 in box" style=""><a href="http://cityadspix.com/tsclick-MIQCWPUV-GECAQBFF?url=http%3A%2F%2Fwww.sotmarket.ru%2Fproduct%2Fdls-m110-in-box.html&sa=mh&sa1=&sa2=&sa3=&sa4=&sa5=&bt=20&pt=9<=2&tl=3&im=ODI1LTAtMTQyNjE0ODU5Ny0xODczNDgyOQ%3D%3D&fid=NDQ1NzU2Nzc1&prdct=34033b053104&kw=box%22%2C%20%22in" target="_blank" alt="M110 in box" title="M110 in box" style="">box", "in</a></a>")
dialogs.relocate_item_section(trader, "bolt", "in")
�� ����� ��ѧۧݧ� ���ا� �ӧ��. ���֧�֧�� �ݧ�ާڧާ�� �� bind_stalker.script ���ڧ�֧� �� ���ߧܧ�ڧ� function actor_binder:net_destroy() ����:
self.object:set_callback(callback.use_object, nil)
�� �� ���ߧܧ�ڧ� actor_binder:reinit() ����:
self.object:set_callback(callback.use_object, self.use_object, self)
�� �ܧ�ߧ֧� ��ѧۧݧ� �է�ҧѧӧݧ�֧� �ߧѧ�� ���ߧܧ�ڧ�:
function actor_binder:use_object(obj) escape_dialog.use_bolt_box_oz(obj) end
����է��ҧߧ�:
function actor_binder:use_object(obj) -- function �ߧѧ٧ӧѧߧڧ� �ߧѧ�֧� ���ߧܧ�ڧ� escape_dialog.use_bolt_box_oz(obj) --�ӧ�٧�� ���ߧܧ�ڧ� use_bolt_box_oz(obj) �ڧ� ��ѧۧݧ� escape_dialog.script end --��ܧ�ߧ�ѧߧڧ� ���ߧܧ�ڧ�
���� �ӧ�� �� �ӧ��, �����ѧߧ�֧� �� �٧ѧܧ��ӧѧ֧� �էѧߧߧ�� ��ѧۧ�. ���ѧ��էڧ� �� �ڧԧ��, ��, �֧�ݧ� �� �ߧڧԧէ� �ߧ� ���ڧҧ��, �ߧѧҧݧ�էѧ֧� �ߧ� �ҧ֧�ܧ�ߧ֧�ߧ�� �ҧ�ݧ� �� �ߧѧ�ѧݧ� �ڧԧ��. �����ҧ� �ҧ�ݧ� �ҧ�� �ߧ� ��էڧ�, �ڧէڧ�� �� ����ݧܧ�, ��� �էѧ�� �ӧѧ� �֧�� 1 �ҧ�ݧ� �� ��֧ݧ�� �ܧ���ҧܧ� �ҧ�ݧ���. �����ҧ� �ڧ٧���� �ҧ�ݧ�� �ڧ� �ܧ���ҧܧ�, ������� �ӧ����ݧ�٧�ۧ�֧�� �֧�, �ܧݧڧܧߧڧ�� ��� �ߧ֧� 2 ��ѧ٧�. ���ѧէ֧���, ���� ���ѧ��� ��ܧѧ٧ѧݧѧ�� �ӧѧ� ���ݧ֧٧ߧ�.
���ӧ���: Dj Ultor ���� �ߧ֧��ߧ��ߧ�� ��ڧާӧ�ݧ� �ڧ٧ӧڧߧ����� �ߧ� �ҧ�է�, ������ �ڧ٧ӧڧߧ�֧��� ���� �ڧާҧڧ�ڧ� ���� �٧ѧԧѧէڧ� �ӧ�� ���ѧ���, �ާ�ا֧� �ܧѧ� �ߧڧҧ�է� �ڧ���ѧӧݧ�.
[[���ѧ�֧ԧ��ڧ�:���ܧ�ڧ���]]