Перейти к контенту

Kirag

Жители
  • Число публикаций

    767
  • Регистрация

  • Последнее посещение

  • AMKoin

    34 [Подарить AMKoin]

Весь контент пользователя Kirag

  1. Подскажите, как скриптом установить прицел на оружии. Оружие в руках, в активном слоте. Прицел на него точно ставится (взял АК-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), но на большее мозгов у меня не хватило. Что и где еще не так - не знаю, нет-пакеты меня вырубают начисто. Или я в принципе неправильно делаю? Запасной вариант с выдачей оружия с уже установленным (но съемным) прицелом тоже не сработал (в скрипте закомменченая строка) - выдается оружие, но без всего. Выручайте, люди добрые!
  2. Если речь идет о том, чтобы с каждым оружием ГГ крутился с разной скоростью, настройки мышки не спасут. В конфиге есть параметр control_inertion_factor, он влияет на скорость поворота с оружием. Для себя установил этот параметр равным корню квадратному из массы оружия (где не было - дописал), разница между легким пистолетом и тяжеленным пулеметом видна невооруженным глазом. С пистолетом крутится, как юла, с пулеметом такое фиг получится. Проверял более точно, перемещал мышку по столу на фиксированное расстояние и считал обороты ГГ. Результат точно не помню, но очень заметный, явно не погрешность эскперимента. Единственно, не знаю точно, изменяет ли этот параметр чувствительность мышки или ограничивает максимальную скорость поворота.
  3. Gonarh Увы, ни разу. Так я тоже пробовал. Выдает вот такое: LUA error: No such operator defined
  4. Как понять "перегруженная функция"? И главный вопрос: Хочу, чтобы каждому сталкеру сразу же при спавне выдавался ствол (для определенности ПМ, выбор оружия, думаю, сделать смогу). По идее, спавн надо прописывать как раз в 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 Как надо писать в этом случае?
  5. По поводу колбэка на смерть ГГ: Смерть ГГ означает, что здоровья осталось 0 или меньше (на всякий случай). В bind_stalker.script в update пишем: if db.actor.health <=0 then <действия в случае смерти ГГ> end Колбэка на спавн непися не нашел, хотя самому нужен. Есть колбэк на переход НПС в онлайн - xr_motivator.script, net_spawn. Может, с помощью этого удастся решить твою задачу... Или кто-то из более грамотных скриптеров укажет нам нужное место
  6. Конфиги нестандартные, полностью переработаны точность и убойность оружия. Данные по убойности даны в скобках в формате (<hit_power>*<k_hit>= <hit_power*k_hit>). Точность очень серьезно повышена относительно конфигов оригинала. У меня она определяется как макс. отклонение пули на 10см от точки идеального попадания (без разброса) на 1000 длин ствола, отсюда считалось fire_dispersion_base. Коэффициент k_disp зависит от мощности патрона (для дроби, понятно, отдельный разговор). Стрелял одиночными практически в упор, чтобы быть точно уверенным, что попадаю точно куда надо. По этой причине далеко от жертвы не отходил. Экспериментировал с бессмертием в условиях реального боя, так что расстояние незначительно, но менялось.
  7. 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 Этого должно хватить
  8. По какому принципу определяются предпочтения НПС, каким оружием пользоваться, если параметры 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 - далеко не факт, но тем не менее. Никакие моды на АИ не установлены. Может, кто-нибудь уже экспериментировал на эту тему и получил какой-то внятный результат?
  9. banderos rs_stats позволяет получить координаты x,y,z. Их достаточно для телепортации командой db.actor:set_actor_position(vector():set (x,y,z)) Сначала сними эти координаты, потом подставь их в эту команду, прыгни, куда надо и сможешь снять уже поные данные о нужной точке.
  10. b = tonumber( a ) Само собой, a должно быть числом, содержащимся в строковой переменной. Обратная операция: c = tostring( b ) Здесь с аргументом проще, возьмет даже nil wolkolak В принципе, может получиться что-то подобное и с таймером. Выстави аптечке в конфиге лечение 0, добавь реально лечащую аптечку. По съедению фиктивной аптечки включается таймер, по завершении которого выдается реальная лечилка и тут же скриптом съедается. Правда, здоровье восстановится все равно мгновенно, но через некоторое время после съедания аптечки с точки зрения геймплея.
  11. Народ, как определить, какое оружие у НПС? Пробовал в 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 выдает...
  12. Серьезно усилить защиту головы очень даже можно. Опыты ставил на модели монолитовской экзы, стрелял в верхнюю часть шлема. Прочность самого сталкера стандартная. 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)
  13. Kirag

    Скриптование

    Спавнить командой spawn_anom(<секция нужной аномалии>,<радиус аномалии>,position,lvid,gvid,<сила аномалии>,-1) position,lvid,gvid - как в обычном спавне. У меня работало как надо не со всеми аномалиями, но работало. А чтобы сделать динамические аномалии, одного спавна мало, там нужно еще много чего продумать. Одно убирание аномалий чего стоит. Так и не решил я толком эту задачу. Точнее сделать - сделал, но ТАКИЕ глюки получил, что просто ужас, пришлось отказаться от этой затеи.
  14. В профиле ему <start_dialog>...</start_dialog> пропиши, должно помочь. Только диалог с "приветом", наверное, надо закомментить.
  15. Kirag

    Скриптование

    bandit_Borov В старой теме меченый(стрелок) отвечал на этот вопрос, воспроизведу его ответ
  16. Kirag

    Сообщество Мапперов

    Из графических модов ничего не ставил, а глюк куда-то делся. Пару раз не уходя с болота перегружал сейв на болоте и подходил к насосной - не помогало. Вышел с локи и загрузил тот же сейв - глюк исчез. Аномалия сталкера, не иначе.
  17. Kirag

    Сообщество Мапперов

    Значит, я все понял верно Будем работать... Скачал болота для 1.0004, и наткнулся на такой вот "Ой!" При подходе к насосной станции получается такая лажа с текстурами. Геометрия в порядке - ГГ ходит по насосной вполне адекватно, но текстуры белые и какие-то полупрозрачные. Расстояние под крестиком вообще отрицательное, от -1.3 до -2.1. Область, похоже, сферическая, центр, судя по цифрам, где-то на первой площадке насосной станции, если идти от базы ЧН. Если отойти от станции в любую сторону, все становится нормально. Это у всех так или только у меня криво поставилось?
  18. Kirag

    Сообщество Мапперов

    В пещере (в пещерах?) Чащи, (равно как и в пещере между Свалкой и Агропромом) стены с односторонней проходимостью. Т.е. идешь по коридору в одну сторону - все нормально, в обратную уже никак - стена из ниоткуда. В Логове такого эффекта вроде не встречал. Возможно, так и задумано, но смотрится и ощущается как глюк. В принципе, можно это дело обыграть пси-зоной без ущерба (либо с пренебрежимо малым ущербом), но с фантомами, плюс фантомы пси-собаки. Мол Зона кругами водит, всякая муть мерещится, реальная и не сильно. В таком антураже и стены-диоды будут смотреться как часть пси-аномалии. Это сделано специально. Ничего изменяться не будет в связи с этим. А из каких соображений, если не секрет? Хочется понять авторский замысел. Ты же сам ответил на этот вопрос, что Зона водит кругами. Вот и я так думаю, что пройдя через какое-то место, нельзя вернуться обратно. А то что это место надо обставить разными пси-зонами - это уже другой вопрос, который решать мододелам. Как можно обставить такие места, что вернуться нельзя. Я узнал, что это можно сделать и сделал. От этого пещеры становятся более запутанными. И можно делать разные лабиринты с этим свойством. Что я и сделал.
  19. Адаптировал смену оружия в ножевом слоте под чистый АМК 1.4.1 и перезалил версию под чистую ТЧ 1.0004 ТЧ: http://ifolder.ru/12088596 АМК: http://ifolder.ru/12088570
  20. Выкладываю свои наработки по смене оружия в ножевом слоте: variable_knife_slot.7z 2.2 Мб Само оружие не мое, я делал только метод замены. Делалось под чистую игру, в АМК должна быть своя функция проверки на использование предмета. Для бинокля система будет аналогичная, только вместо fake_wpn_... будет, скажем, fake_binoc_... P.S. Это должно было быть в ридми, но я затупил и забыл его сохранить перед архивацией: Смена оружия в нулевом (ножевом) слоте. Доступно три вида оружия: нож из оригинала, кулаки (автор Gosuke) и ломик (автор Бендер aka Кенни, Сталкер Портал) Ломик кривой, подправил как умел, но медицина на уровне конфигов тут бессильна
  21. 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. Все сказанное я делал только для ножевого слота, но аналогично делается и для бинокля. Рисовать слот и его содержимое в инвентаре даже не пробовал, на эту тему ничего сказать не могу. Ограничения такого подхода: при смене оружия не сохранется состояние оружия и количество/тип патронов в нем. Для непортящегося холодного оружия это незаметно, для огнестрельного придется продумывать еще и этот момент.
  22. Что может означать лог: 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 И как эту гадость лечить? Вылет, похоже, рандомный. Оружие и НПС могут быть разными.
  23. Файл config\scripts\sar_monolith_call.ltx, заменить строку active = sr_idle на active = nil
  24. Big.D Ничего страшного в этом нет, это вывод отладочной информации из какого-то из модов. ! Unknown command - побочный эффект вывода информации в лог. В принципе, жрать не просит, но если сильно хочешь отключить, пройдись поиском по папке scripts, поищи строчки dbg:sect_=_, dbg:vis_suit_=_ и т.д. и закомменти их. Только резервную копию сделай на всякий случай...
  25. В 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 Потом запусти сталкер, загрузи игру, выйди в меню и нажми кнопку "Титры". Все, декодер в инвентаре.
×
×
  • Создать...