![](https://www.amk-team.ru/forum/uploads/set_resources_35/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
Kirag
Жители-
Число публикаций
767 -
Регистрация
-
Последнее посещение
-
AMKoin
34 [Подарить AMKoin]
Весь контент пользователя Kirag
-
Подскажите, как скриптом установить прицел на оружии. Оружие в руках, в активном слоте. Прицел на него точно ставится (взял АК-74 для опытов) Пробовал вот такой функцией: function scope() local wpn = db.actor:item_in_slot(db.actor:active_slot()) if wpn then local wid = wpn:id() local wdat = amk.get_weapon_data(alife():object(wid)) local af = wdat.addon_flags local uaf = wdat.updaddon_flags --news_manager.send_tip(db.actor, " addon_flags: "..tostring(af).." updaddon_flags: "..tostring(uaf), nil, nil, 20000) wdat.addon_flags = af + 1 wdat.updaddon_flags = af + 1 local wobj = alife():object(wid) --local wobj = alife():create(wpn:section(), db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) amk.set_weapon_data(wdat,wobj) end end Результат - ноль. Есть ли прицел в инвентаре - не имеет значения (да и не должно по идее), пробовал и так и так. Похоже, ничего не записывается, проверял двумя вызовами подряд, addon_flags не изменяется на втором вызове, хотя должен бы. В скрипте очепятку подправил, где в fill_item_packet(ret,stpk,updpk) вместо writevu8uN(pk,v) (как по логике и должно бы быть, запись все-таки) вызывалось readvu8uN(packet,n) (с закономерным вылетом LUA error: d:\games\s.t.a.l.k.e.r\gamedata\scripts\amk.script:2061: 'for' limit must be a number), но на большее мозгов у меня не хватило. Что и где еще не так - не знаю, нет-пакеты меня вырубают начисто. Или я в принципе неправильно делаю? Запасной вариант с выдачей оружия с уже установленным (но съемным) прицелом тоже не сработал (в скрипте закомменченая строка) - выдается оружие, но без всего. Выручайте, люди добрые!
-
Если речь идет о том, чтобы с каждым оружием ГГ крутился с разной скоростью, настройки мышки не спасут. В конфиге есть параметр control_inertion_factor, он влияет на скорость поворота с оружием. Для себя установил этот параметр равным корню квадратному из массы оружия (где не было - дописал), разница между легким пистолетом и тяжеленным пулеметом видна невооруженным глазом. С пистолетом крутится, как юла, с пулеметом такое фиг получится. Проверял более точно, перемещал мышку по столу на фиксированное расстояние и считал обороты ГГ. Результат точно не помню, но очень заметный, явно не погрешность эскперимента. Единственно, не знаю точно, изменяет ли этот параметр чувствительность мышки или ограничивает максимальную скорость поворота.
-
Gonarh Увы, ни разу. Так я тоже пробовал. Выдает вот такое: LUA error: No such operator defined
-
Как понять "перегруженная функция"? И главный вопрос: Хочу, чтобы каждому сталкеру сразу же при спавне выдавался ствол (для определенности ПМ, выбор оружия, думаю, сделать смогу). По идее, спавн надо прописывать как раз в se_stalker:on_spawn(). Перепробовал несколько вариантов, результат один - вылет в самом начале загрузки новй игры. Изначально было написано give_weapon.slot1(self.object) Лог - LUA error: ...s\s.t.a.l.k.e.r\gamedata\scripts\give_weapons.script:255: attempt to index local 'npc' (a nil value) И сама функция (адекватно работала при вызове из xr_motivator.script, net_spawn) function slot1(npc) alife():create("wpn_pm", npc:position(), npc:level_vertex_id(), npc:game_vertex_id(), npc:id()) alife():create("ammo_9x18_fmj", npc:position(), npc:level_vertex_id(), npc:game_vertex_id(), npc:id()) end Как надо писать в этом случае?
-
По поводу колбэка на смерть ГГ: Смерть ГГ означает, что здоровья осталось 0 или меньше (на всякий случай). В bind_stalker.script в update пишем: if db.actor.health <=0 then <действия в случае смерти ГГ> end Колбэка на спавн непися не нашел, хотя самому нужен. Есть колбэк на переход НПС в онлайн - xr_motivator.script, net_spawn. Может, с помощью этого удастся решить твою задачу... Или кто-то из более грамотных скриптеров укажет нам нужное место
-
[SoC] Расчет повреждений при стрельбе по неписям
Kirag ответил на тему форума автора frags в Скрипты / конфиги / движок
Конфиги нестандартные, полностью переработаны точность и убойность оружия. Данные по убойности даны в скобках в формате (<hit_power>*<k_hit>= <hit_power*k_hit>). Точность очень серьезно повышена относительно конфигов оригинала. У меня она определяется как макс. отклонение пули на 10см от точки идеального попадания (без разброса) на 1000 длин ствола, отсюда считалось fire_dispersion_base. Коэффициент k_disp зависит от мощности патрона (для дроби, понятно, отдельный разговор). Стрелял одиночными практически в упор, чтобы быть точно уверенным, что попадаю точно куда надо. По этой причине далеко от жертвы не отходил. Экспериментировал с бессмертием в условиях реального боя, так что расстояние незначительно, но менялось. -
Rekviem777 Можно заменить электрохимеру на сильную химеру. Для этого в bind_monster.script закомменти строки if obj:section()=="electro_chimera" and time_global()>(self.charge_time or 0)+3000 then amk_particle.amk_particle({particle="anomaly2\\electra2_blast",pos=obj:bone_position("bip01_spine"),sound="anomaly\\electra_blast1"}) local dist = db.actor:position():distance_to(obj:bone_position("bip01_spine")) if dist < 20 then local h = hit() h.impulse = 0 h.draftsman = db.actor h.direction = vector():set(0,0,0) h:bone("bip01_spine") h.power = 1/dist h.type = hit.strike db.actor:hit(h) h.power = 15/dist h.type = hit.shock db.actor:hit(h) end self.charge_time=time_global() end Это отключит разряд. Чтобы отключить партиклы на электрохимере, в m_chimera.ltx закомменти в секции электрохимеры строки bones_particles = electro_chimera_particles immunities_sect = electro_chimera_immunities Этого должно хватить
-
По какому принципу определяются предпочтения НПС, каким оружием пользоваться, если параметры ef_main_weapon_type и ef_weapon_typе одинаковые? Ситуация такая: Есть MP-5, STEYR AUG и XM-8. MP-5 на первый слот, остальные на второй. MP-5 чуть скорострельнее и легче, но проигрывает в точности и мощности. В mp_ranks MP-5 стоит в 0 ранге, все остальное в 4. Тем не менее, если НПС берет в руки MP-5, его уже не вышибить оттуда, пока он жив. При попытке продать ему STEYR или XM он покупает, берет в руки, а потом сбрасывает на землю и достает свой MP-5. Патроны к STEYR и XM у НПС есть абсолютно точно, к MP-5 - далеко не факт, но тем не менее. Никакие моды на АИ не установлены. Может, кто-нибудь уже экспериментировал на эту тему и получил какой-то внятный результат?
-
banderos rs_stats позволяет получить координаты x,y,z. Их достаточно для телепортации командой db.actor:set_actor_position(vector():set (x,y,z)) Сначала сними эти координаты, потом подставь их в эту команду, прыгни, куда надо и сможешь снять уже поные данные о нужной точке.
-
b = tonumber( a ) Само собой, a должно быть числом, содержащимся в строковой переменной. Обратная операция: c = tostring( b ) Здесь с аргументом проще, возьмет даже nil wolkolak В принципе, может получиться что-то подобное и с таймером. Выстави аптечке в конфиге лечение 0, добавь реально лечащую аптечку. По съедению фиктивной аптечки включается таймер, по завершении которого выдается реальная лечилка и тут же скриптом съедается. Правда, здоровье восстановится все равно мгновенно, но через некоторое время после съедания аптечки с точки зрения геймплея.
-
Народ, как определить, какое оружие у НПС? Пробовал в xr.motivator в net_spawn вписать для начала строку: news_manager.send_tip(db.actor, "motivator_binder:net_spawn(): self.object:name()= "..tostring(self.object:best_weapon()), nil, nil, 20000) По идее, при переходе НПС в онлайн должно выдавать, что у него за оружие. На практике - nil, хотя прекрасно видно, что НПС вооружен до зубов. Если вместо best_weapon() писать weapon_in_slot(N) - выкидывает с логом [error]Arguments : LUA error: ...\s.t.a.l.k.e.r\gamedata\scripts\escape_dialog.script:171: attempt to call method 'weapon_in_slot' (a nil value) Как вариант, можно ли определить оружие НПС в момент спавна по респавнеру? Вот же я дебил! Kolmogor спасибо за вразумление! Только почему-то все равно nil выдает...
-
[SoC] Расчет повреждений при стрельбе по неписям
Kirag ответил на тему форума автора frags в Скрипты / конфиги / движок
Серьезно усилить защиту головы очень даже можно. Опыты ставил на модели монолитовской экзы, стрелял в верхнюю часть шлема. Прочность самого сталкера стандартная. hit_fraction = 0.0001 [head_helmet_damage] изначальный - все по 1.0, 0.2 Смерть с первого выстрела из ПМ (hit+power = 0.45) патроном 9х18_fmj (k_hit = 1) Далее поправил в [head_helmet_damage] все строки на 1.0, 1.0 Без проблем держит несколько обойм из ПМ патронами fmj (0,45*1 = 0,45) Без проблем держит несколько обойм из Walther P38 патронами 9x19_pbp (0,47*1,48 = 0,6956) Выдержал барабан из Ruger GP-100 патронами .357jfp (0,45*1,78 = 0,801) - больше не было Выдержал магазин из FN F2000 патронами 5.56x45_ss190 (0,61*1,54 = 0,9394) - больше не было Помер со 2 выстрела из Ruger GP-100 патронами .357jhp (0,45*2,49 = 1,1205) Наповал из FN F2000 патронами 5.56x45_ap (0,61*2,16 = 1,3176) -
Спавнить командой spawn_anom(<секция нужной аномалии>,<радиус аномалии>,position,lvid,gvid,<сила аномалии>,-1) position,lvid,gvid - как в обычном спавне. У меня работало как надо не со всеми аномалиями, но работало. А чтобы сделать динамические аномалии, одного спавна мало, там нужно еще много чего продумать. Одно убирание аномалий чего стоит. Так и не решил я толком эту задачу. Точнее сделать - сделал, но ТАКИЕ глюки получил, что просто ужас, пришлось отказаться от этой затеи.
-
В профиле ему <start_dialog>...</start_dialog> пропиши, должно помочь. Только диалог с "приветом", наверное, надо закомментить.
-
bandit_Borov В старой теме меченый(стрелок) отвечал на этот вопрос, воспроизведу его ответ
-
Из графических модов ничего не ставил, а глюк куда-то делся. Пару раз не уходя с болота перегружал сейв на болоте и подходил к насосной - не помогало. Вышел с локи и загрузил тот же сейв - глюк исчез. Аномалия сталкера, не иначе.
-
Значит, я все понял верно Будем работать... Скачал болота для 1.0004, и наткнулся на такой вот "Ой!" При подходе к насосной станции получается такая лажа с текстурами. Геометрия в порядке - ГГ ходит по насосной вполне адекватно, но текстуры белые и какие-то полупрозрачные. Расстояние под крестиком вообще отрицательное, от -1.3 до -2.1. Область, похоже, сферическая, центр, судя по цифрам, где-то на первой площадке насосной станции, если идти от базы ЧН. Если отойти от станции в любую сторону, все становится нормально. Это у всех так или только у меня криво поставилось?
-
В пещере (в пещерах?) Чащи, (равно как и в пещере между Свалкой и Агропромом) стены с односторонней проходимостью. Т.е. идешь по коридору в одну сторону - все нормально, в обратную уже никак - стена из ниоткуда. В Логове такого эффекта вроде не встречал. Возможно, так и задумано, но смотрится и ощущается как глюк. В принципе, можно это дело обыграть пси-зоной без ущерба (либо с пренебрежимо малым ущербом), но с фантомами, плюс фантомы пси-собаки. Мол Зона кругами водит, всякая муть мерещится, реальная и не сильно. В таком антураже и стены-диоды будут смотреться как часть пси-аномалии. Это сделано специально. Ничего изменяться не будет в связи с этим. А из каких соображений, если не секрет? Хочется понять авторский замысел. Ты же сам ответил на этот вопрос, что Зона водит кругами. Вот и я так думаю, что пройдя через какое-то место, нельзя вернуться обратно. А то что это место надо обставить разными пси-зонами - это уже другой вопрос, который решать мододелам. Как можно обставить такие места, что вернуться нельзя. Я узнал, что это можно сделать и сделал. От этого пещеры становятся более запутанными. И можно делать разные лабиринты с этим свойством. Что я и сделал.
-
Адаптировал смену оружия в ножевом слоте под чистый АМК 1.4.1 и перезалил версию под чистую ТЧ 1.0004 ТЧ: http://ifolder.ru/12088596 АМК: http://ifolder.ru/12088570
-
Выкладываю свои наработки по смене оружия в ножевом слоте: variable_knife_slot.7z 2.2 Мб Само оружие не мое, я делал только метод замены. Делалось под чистую игру, в АМК должна быть своя функция проверки на использование предмета. Для бинокля система будет аналогичная, только вместо fake_wpn_... будет, скажем, fake_binoc_... P.S. Это должно было быть в ридми, но я затупил и забыл его сохранить перед архивацией: Смена оружия в нулевом (ножевом) слоте. Доступно три вида оружия: нож из оригинала, кулаки (автор Gosuke) и ломик (автор Бендер aka Кенни, Сталкер Портал) Ломик кривой, подправил как умел, но медицина на уровне конфигов тут бессильна
-
wolkolak,Real Wolf Честно сделать переключение предметов в ножевом и в биноклевом слотах нельзя, но можно это ограничение обойти. Решал эту задачку для ножевого слота. Принцип такой: 1) Для каждого оружия, предназначенного в ножевой слот делаем парный предмет - фейк. Тот же визуал, цена, вес, иконка, описание - в общем, все видимые характеристики. Принципиальное отличие - это не оружие, а предмет на классе антирада. Секция фейка: например нож-оружие - wpn_knife, нож-фейк - fake_wpn_knife. В инвентаре оружие от фейка можно отличить только по отсутствию у фейка полосок характеристик. 2) Нужен скрипт, проверяющий на использование предмета, на этом принципе сделан спальник в АМК. Если первые 5 символов в секции использованого предмета - fake_, значит происходит попытка переключить оружие. Пусть в слоте предмет X (оружие X), а в инвентаре используем предмет fake_Y (фейк оружия Y, в понимании игры - съедабельный объект). Тогда: 2.1) Предмет fake_Y съедается, запуская скрипт, в котором: 2.1.1) Удаляем предмет X 2.1.2) Спавним в инвентарь предмет Y, он падает в освободившийся от X слот 2.1.3) Спавним в инвентарь предмет fake_X Получаем оружие Y в слоте и предмет fake_X в инвентаре, что и требовалось. P.S. Все сказанное я делал только для ножевого слота, но аналогично делается и для бинокля. Рисовать слот и его содержимое в инвентаре даже не пробовал, на эту тему ничего сказать не могу. Ограничения такого подхода: при смене оружия не сохранется состояние оружия и количество/тип патронов в нем. Для непортящегося холодного оружия это незаметно, для огнестрельного придется продумывать еще и этот момент.
-
Что может означать лог: FATAL ERROR [error]Expression : e_entity->ID_Parent == id_parent [error]Function : xrServer::Process_event_reject [error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\xrServer_process_event_reject.cpp [error]Line : 24 [error]Description : wpn_saiga_m350183 [error]Arguments : val_bandit_respawn_147872 И как эту гадость лечить? Вылет, похоже, рандомный. Оружие и НПС могут быть разными.
-
Файл config\scripts\sar_monolith_call.ltx, заменить строку active = sr_idle на active = nil
-
Big.D Ничего страшного в этом нет, это вывод отладочной информации из какого-то из модов. ! Unknown command - побочный эффект вывода информации в лог. В принципе, жрать не просит, но если сильно хочешь отключить, пройдись поиском по папке scripts, поищи строчки dbg:sect_=_, dbg:vis_suit_=_ и т.д. и закомменти их. Только резервную копию сделай на всякий случай...
-
В ui_main_menu.script допиши в самый конец файла: function main_menu:OnButton_credits_clicked() alife():create("decoder", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id()) -- собственно спавн get_console():execute("main_menu off") -- закрытие меню end Потом запусти сталкер, загрузи игру, выйди в меню и нажми кнопку "Титры". Все, декодер в инвентаре.
УЧИМСЯ МОДДИНГУ
ИГРАЕМ В МОДЫ НА ТЧ
ИГРАЕМ В МОДЫ НА ЧН И ЗП
- [ЧН] OGSM CS 1.8 CE Fixes
- [ЧН] HARDWARMOD 3.2
- [ЗП] The Long Road
- [ЧН] New vision of War
- [ЧН] Old Good Stalker Mod - Clear Sky
- [ЗП] Unofficial Patch
- [ЗП] Смерти вопреки
- [ЗП] Контракт на хорошую жизнь
- [ЗП] Shoker Weapon Mod 2.1
- [ЗП] Hardcore pack for SGM 2.2
- [ЗП] Контракт Синдиката
- [ЗП] Клондайк 2.0
- ...и другие моды
ПОЛЕЗНОЕ И РАЗНОЕ