Новое на сайте:
Новости:
Файлы:
Статьи:
Топ пользователей:
Обновления сайта:
Группа "Гости" не имеет право просмотра модуля
Модератор форума: romale |
Форум S.T.A.L.K.E.R. - Моддинг Разбираем S.T.A.L.K.E.R. Разборочная комната ТЧ (Задаем вопросы по скриптам/конфигам и другим файлам игры) |
Разборочная комната ТЧ |
Дата: Вторник, 17.04.2012, 22:43
Сообщение #1
Вы задаёте интересующий вас вопрос и тот, кто может вам на него ответить, пишет свой ответ. Правила темы: 1. Прежде чем задать вопрос, желательно прочитать все предыдущие страницы темы. Даже если вы не найдете там нужного ответа - я уверен, вы узнаете много нового. Второй вариант - воспользоваться поиском по ключевому слову. 2. Вы можете задавать вопросы, только непосредственно касающиеся создания модификаций и редактирования файлов игры 3. Личные вопросы не допускаются 4. Отвечать на вопросы желательно достаточно развернуто, задевая все аспекты касающиеся конкретного вопроса 5. Отвечать вы можете только в том случае если уверены в правильности ответа, если не знаете - просто не отвечайте. Авторы неправильных, вводящих в заблуждение ответов будут наказываться. 6.Соблюдайте грамотность и правильность построения вопросов и ответов, во избежание их удаления. "Спасибо / пожалуйста / не знаю" и прочие односложные и не несущие смысловой нагрузки сообщения, будут удаляться немедленно, а их авторы - наказываться. Основная цель темы - помочь новичкам-модостроителям, второстепенная - свести на нет тенденцию создания новых тем по каждому интересующему новичков вопросу.
|
Дата: Суббота, 04.05.2013, 11:35
Сообщение #421
Graff46, Насчет значения db.actor:alcohol не знаю (да и существует ли оно вообще?). Можете попробовать спавнить пару бутылок водки и сразу их выпивать. Съесть что-то можно так:
Код local alc = db.actor:object("vodka") if alc then db.actor:eat(alc) end Насчет сломанного оружия - нужно назначать здоровье предмета через net_packet (если скриптово). Либо ищите секцию в алл спавне и таким макаром спавните то, что нужно. perez, Открываете конфиг нужного оружия и находите там значение slot и ставите цифру 1. ЗЫ: Не забываем, что пистолетный слот не предусмотрен для больших пушек - клеток не хватит и будет все криво. |
Дата: Воскресенье, 05.05.2013, 03:33
Сообщение #422
Цитата (volazar) Насчет сломанного оружия - нужно назначать здоровье предмета через net_packet (если скриптово). Как реализовать скриптово? Я спавнил так: Код function habar_fan () alife():create("dolg_outfit",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) alife():create("grenade_rgd5",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) alife():create("grenade_rgd5",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) alife():create("grenade_rgd5",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) alife():create("grenade_f1",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) alife():create("wpn_mp5_m2",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) alife():create("ammo_9x19_pbp",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) alife():create("ammo_9x19_pbp",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) alife():create("ammo_9x19_pbp",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) alife():create("ammo_9x19_pbp",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) alife():create("ammo_9x19_pbp",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) Код alife():create("wpn_mp5_m2",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) Сообщение отредактировал Graff46 - Воскресенье, 05.05.2013, 03:34 |
Дата: Воскресенье, 05.05.2013, 10:54
Сообщение #423
Цитата (Graff46) Как реализовать скриптово? Должен быть установлен АМК мод или библиотека net_packet (на АМК лежит за авторством Artos и Co). Пример скриптового спавна подсказать не смогу, не было причин спавнить порченое оружие Можете заспавить через алл спавн, пример: Код [20073] ; cse_abstract properties section_name = wpn_ognemet name = jup_gun_2 position = -390.73,12.77,-16.55 direction = 0,4.7,0 ; cse_alife_object properties game_vertex_id = 3708 distance = 0 level_vertex_id = 57647 object_flags = 0xffffff07 ; cse_visual properties visual_name = weapons\fn2000\wpn_fn2000_old ; cse_alife_item properties condition = 1 upd:num_items = 0 ; cse_alife_item_weapon properties ammo_current = 90 upd:condition = 255 upd:weapon_flags = 0 upd:ammo_elapsed = 50 upd:addon_flags = 0 upd:ammo_type = 0 upd:weapon_state = 0 upd:weapon_zoom = 0 upd:current_fire_mode = 0 Важная строчка - condition = 1. ЗЫ: Вашу ф-ию можно сократить: Код function habar_fan() local tbl_obj = { "dolg_outfit", "wpn_mp5_m2", "grenade_f1", "ammo_9x19_pbp", "ammo_9x19_pbp", "ammo_9x19_pbp", "ammo_9x19_pbp", "ammo_9x19_pbp", "grenade_rgd5", "grenade_rgd5", "grenade_rgd5" } -- таблица с нужными предметами for _, obj in pairs(tbl_obj) do alife():create(obj,vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) end end |
Дата: Воскресенье, 05.05.2013, 14:10
Сообщение #425
Цитата (Graff46) Подскажите как можно вызвать ф-ию при старте новой игры? Вариантов - море. Как пример в bind_stalker.script в тело функции actor_binder:update(delta) пишите: Код if not has_alife_info("info") then ...... db.actor:give_info_portion("info") end Вместо многоточия вставляете что нужно. Поршень info надо не забыть зарегистрировать в info_***.xml Цитата (Graff46) где лежит модель ноутбука \gamedata\meshes\equipments\item_notebook.ogf |
Дата: Воскресенье, 05.05.2013, 14:56
Сообщение #426
Получилось только так
Код if not has_alife_info("trifon") then local alc = db.actor:object("vodka") if alc then db.actor:eat(alc) local alc = db.actor:object("vodka") if alc then db.actor:eat(alc) db.actor:give_info_portion("trifon") end end end и две водки актору в аллСпавне; db.actor:alcohol - не работает Сообщение отредактировал Graff46 - Воскресенье, 05.05.2013, 14:57 |
Дата: Воскресенье, 05.05.2013, 15:12
Сообщение #427
Graff46, А зачем вы объявляете 2 раза одну и ту же переменную alc? Достаточно 1 раза. Да и не понятна конструкция if-a внутри if-a, у вас одно и тоже действие.
Сделайте цикл for i=1, 2 do и туда впихните db.actor:eat. Будет и быстрее. Код if not has_alife_info("trifon") then local alc = db.actor:object("vodka") if alc then for i=1, 2 do db.actor:eat(alc) end end db.actor:give_info_portion("trifon") end |
Дата: Воскресенье, 05.05.2013, 16:45
Сообщение #428
Цитата (volazar) А зачем вы объявляете 2 раза одну и ту же переменную alc Я не программист и в этих тонкостях пока не разбираюсь)) Добавлено (05.05.2013, 16:22) Код "Наносим хит предмету" Код Код: function hit_nanesti() for a=1,65635,1 do local obj=level.object_by_id(a) if obj and string.find(obj:name(),"ПРЕДМЕТ") then local h = hit (); h.power = 10000; h.direction = vector():set (0, 0, 0); h.impulse = 0; h.draftsman = obj; h.type = hit.explosion; obj:hit (h); end end end и вот Код function habar_fan_1 () alife():create("wpn_mp5_m2",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) Добавлено (05.05.2013, 16:45) |
Дата: Воскресенье, 05.05.2013, 16:49
Сообщение #429
Graff46,
Код function hit_nanesti() alife():create("wpn_mp5_m2",vector():set(-207.53218078613,-22.037908554077,-127.47645568848),45952,58) for a=1,65635,1 do local obj=level.object_by_id(a) if obj and string.find(obj:name(),"wpn_mp5_m2") then local h = hit(); h.power = 10000; h.direction = vector():set(0,0,0); h.impulse = 0; h.draftsman = obj; h.type = hit.explosion; obj:hit(h); end end end |
Дата: Воскресенье, 05.05.2013, 17:41
Сообщение #430
Не работает, я похоже так же делал. Ну её в пень! Я потом через аллСпавн сделаю.
Проверте пожалуйста ф-цию - она должна переводить нпс в оффлайн, выдавать инф.поршень Код fan_1 Код function fan_v_off(actor, npc) local npc = alife():story_object(022) if npc then alife():set_switch_online (npc:id (), false) alife():set_switch_offline (npc:id (), true) end if npc and level.name() == "alife_l07_military" then alife():set_switch_online (npc:id (), true) alife():set_switch_offline (npc:id (), false) end db.actor:give_info_portion("fan_1") end |
Дата: Воскресенье, 05.05.2013, 18:33
Сообщение #431
Код level.name() == "alife_l07_military" Проверка действует только на актора. НПС-у до фени, где он. Если вам надо отловить НПС-а в определенной точке - ставьте рестриктор с логикой on_npc_in_zone и выполняйте ф-ию из него же. ЗЫ: Пример рестриктора, который сработает при входе в него определенного НПС-а: Код function create_restr() local obj = alife():create("space_restrictor",vector():set(x,y,z),lv,gv) local custom = [[ [logic] active = sr_idle [sr_idle] on_npc_in_zone = 022|]]..obj:name()..[[|nil %+info =func%]] rewrite_restrictor(obj, custom, 1.0) end 022 - сид, info - имя вашего поршня, func - имя функции. ЗЗЫ: Не сработает, если вы будете в оффлайне. ЗЗЗЫ: Ф-ия, которую вызываете из рестриктора должна обязательно находится в файле xr_effects.script ЗЗЗЗЫ: На АМК моде работаете? Или на чистом сталкере? Если на чистом - то там не получится без правок спавнить через скрипт рестриктор. ЗЗЗЗЗЫ: С ендами все нормально. |
Дата: Воскресенье, 05.05.2013, 18:40
Сообщение #432
Цитата (volazar) Проверка действует только на актора Разве??o_O Первоначальная ф-ция была такая: Код "Проверяет, находится ли, например, Волк на локации Кордон" Код Код: function rest() local npc = level_object_by_sid(006) --волк if npc and level.name() == "l01_escape" then return true else return false end end |
Дата: Воскресенье, 05.05.2013, 18:54
Сообщение #434
Ещё вопрос. Если сделать так:
Код [smart_terrains] esc_lager = {-fan_1} mil_lager = {+fan_1} А если нпс перевести в оффлайн, а потом уже дать поршень на перемещение, то он "мгновенно" туда переместиться или будет также "идти"?? Сообщение отредактировал Graff46 - Воскресенье, 05.05.2013, 18:54 |
| |||