Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском. Возможно, ответ на Ваш вопрос уже есть. Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
ФеНиКс 2 Опубликовано 25 Июня 2010 Поделиться Опубликовано 25 Июня 2010 Garry_Galler Любой НПС должен бить в морду-- level.add_cam_effector("camera_effects\\fusker.anm", 999, false, "") -- это просто эффект от удара а самого удара не происходит И так же мне не ясно как сделать проверку: Если ГГ использовал предмет, то... И сделать это цикличным, т.е. предмет может использоваться многократно. (допустим нож) если ты(ГГ) махнул ножом(т.е. использовал) и ты(гг) стои(т)шь на расстоянии удара, то НПС ударит в морду ГГ. Ссылка на комментарий
Гость max_max_08 Опубликовано 25 Июня 2010 Поделиться Опубликовано 25 Июня 2010 sobaka, поищи в новых скриптах что-то типа этого amk.mylog или amk.send_tip и закоментируй эту строку. Ссылка на комментарий
Ирбис 183 Опубликовано 25 Июня 2010 Поделиться Опубликовано 25 Июня 2010 Подскажите пожалуйста название модели деревянной коробки , которая лежит сразу за дверью сидоровича рядом с баллоном и название модели разбиваемой железной коробки в которых обычно находятся патроны и прочее. Сообщение от модератора n6260 А что мешает в распакованной геймдате просмотреть все модели по-очереди и найти искомое? Просто интересно... Строгое предупреждение от модератора n6260 З.Ы. Безграмотность царит минимум три ошибки Замедляю полураспад души стержнями музыки Ссылка на комментарий
dimos 10 Опубликовано 25 Июня 2010 Поделиться Опубликовано 25 Июня 2010 (изменено) Ирбис, box_wood_01.ogf и box_metall_01_prt1.ogf+box_metall_01_prt2.ogf. Глянь здесь gamedata\meshes\dynamics\box\ программами ogf viewer или milkshape. Изменено 25 Июня 2010 пользователем dimos Цензура ограничивает творчество © by me Ссылка на комментарий
Garry_Galler 7 Опубликовано 25 Июня 2010 Поделиться Опубликовано 25 Июня 2010 ФеНиКс ну дак я же говорю - удар это анимация камеры плюс АНИМАЦИЯ NPC (punch называется). Вот тебе и нужно как то это все в одном скрипте объединить - чтобы и анимация камеры сработала и анимация NPC. если ты(ГГ) махнул ножом(т.е. использовал) и ты(гг) стои(т)шь на расстоянии удара, то НПС ударит в морду ГГ Вот ты чего захотел. А отследить использования ножа ГГ сможешь? Это первое что надо сделать. далее скриптом (если это возможно - сам не делал) вызвать у ближайшего к ГГ NPC (расстояние удара - перебор всех онлайн NPC и проверка расстояния от ГГ до всех онлайн NPC ) анимацию удара (ну и анимацию камеры включить и все прочие эффекты). Так что не все так просто. Как это сделать по другому - не влезая в АИ схемы NPC - не знаю. Ссылка на комментарий
ФеНиКс 2 Опубликовано 25 Июня 2010 Поделиться Опубликовано 25 Июня 2010 Вот что у меня вышло, function za_fak_v_mordu() --local actor = db.actor --local ipos = actor:position() for i,v in pairs(db.storage) do local obj = level.object_by_id(i) if obj and IsStalker(obj) and obj:alive() and obj.health > 0.1 then --and if obj:position():distance_to(db.actor:position()) < 2 then local item = db.actor:active_item() if not (item and item:section() == "wpn_fuck") then -- set_inactivate_input_time(30) local snd_obj = xr_sound.get_safe_sound_object([[affects\hit_fist]]) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) level.add_cam_effector("camera_effects\\fusker.anm", 1999, false, "") level.add_pp_effector("fire_hit.ppe", 1974, false) end end end end end но я не знаю как анимку проиграть это раз и постэффет сразуже проигрывается, т.к. ставлю на апдейд. Как исправить это? и как отследить использование ножа? Ссылка на комментарий
Garry_Galler 7 Опубликовано 25 Июня 2010 Поделиться Опубликовано 25 Июня 2010 ФеНиКс не понял эту строчку - if not (item and item:section() == "wpn_fuck") then если тебе нужно узнать та ли вещь у ГГ в руках тогда нужно if (item and item:section() == "wpn_fuck") then - а иначе получается обратное. нож стреляет патронами - но магазин у него равен 0. Так что без правки конфига ножа не обойтись - магазин должен быть как минимум на 1 патрон. Ну дальше - все просто: проверяешь на апдейте сколько патронов в магазине ножа и если меньше чем размер магазина - значит ГГ "замахнулся" ножом. только патрон нужно вернуть обратно в магазин - скриптом. Примеры смотри в гравипушках :-) Ссылка на комментарий
ФеНиКс 2 Опубликовано 25 Июня 2010 Поделиться Опубликовано 25 Июня 2010 (изменено) Garry_Galler Ой точно...я просто скопипастил, а not не убрал =) Если честно, то нож-то мне и не нужен просто вещь на классе болта сделана... и надо как-то отследить её применение. И остаётся загадкой как анимацию проиграть...=( Изменено 25 Июня 2010 пользователем ФеНиКс Ссылка на комментарий
Stalk15 27 Опубликовано 25 Июня 2010 Поделиться Опубликовано 25 Июня 2010 (изменено) Как можно НПС'у поменять его группировку.Вот например, поговорил с Волком, вызвал функцию и Волк стал Бандитом.Можно так сделать? Изменено 25 Июня 2010 пользователем Stalk15 Ссылка на комментарий
KEN 0 Опубликовано 25 Июня 2010 Поделиться Опубликовано 25 Июня 2010 Ребят токая проблемка у меня: поставил 6 патч, после этого шрифт стал маленьким, очень неприятно глазу, на 4 патче все было ОК, формат монитора 16:10 дак вот кто знает как увеличить размер шрифта, где ковырять!? Хост с картинкой сдох. dc Ссылка на комментарий
ФеНиКс 2 Опубликовано 25 Июня 2010 Поделиться Опубликовано 25 Июня 2010 (изменено) Stalk15 function name() local npc = level_object_by_sid(айди) npc:set_character_community("имя группировки", 0, 0) end Если функцию смены группировки запускать из логики непися или из диалога, то функция будет выглядеть так: function name(actor, npc) npc:set_character_community("имя группировки", 0, 0) end Изменено 25 Июня 2010 пользователем ФеНиКс Ссылка на комментарий
Stalk15 27 Опубликовано 25 Июня 2010 Поделиться Опубликовано 25 Июня 2010 (изменено) ФеНиКс Спасибо. А не подскажите еще кто-нибудь функцию, которая удалила бы, например, Волка? Изменено 25 Июня 2010 пользователем Stalk15 Ссылка на комментарий
_Призрак_ 11 Опубликовано 25 Июня 2010 Поделиться Опубликовано 25 Июня 2010 (изменено) http://www.amk-team.ru/forum/index.php?s=&...st&p=371141 почитай. А скрипт такой: function name_function() local se_obj = alife():object("сюда_пишем_что_удалять_будем") if se_obj then alife():release(se_obj, true) end end ПРИМЕР --' убираем финального Клыка function dell_kluk_final() local se_obj = alife():object("final_kluk") if se_obj then alife():release(se_obj, true) end end или можно совсем просто: function dell_kluk_final() alife():release("сюда_пишем_что_удалять_будем", true) end Изменено 25 Июня 2010 пользователем _Призрак_ Freedom Ссылка на комментарий
Malandrinus 615 Опубликовано 25 Июня 2010 Поделиться Опубликовано 25 Июня 2010 Garry_Galler, конечно еще остается вариант с запоминанием текущего состояния кнопок ....Что я и попробую сделать. Я думаю, что так и придётся сделать. С восстановлением состояния кнопок не должно возникнуть никаких проблем. У меня нормально задавалось начальное состояние кнопок: видимость, включённость и пр. Немного общей информации в тему. Покопавшись немного я обнаружил интересный факт. Начало новой игры отнюдь не всегда означает, что все объекты будут созданы заново. Вот например то-же окно инвентаря (и вероятно все остальные стандартные окна) остаётся тем-же самым объектом вплоть до выхода из программы. Это означает в частности, что если вы поместили на это окно свою кнопку, то эта кнопка там останется даже после загрузки другого сохранения. Похожим образом ведут себя диалоги, инициализированные скриптами. Диалог инициализируется один раз при первом запуске и остаётся таким вплоть до выхода из программы. Вероятно есть и другие компоненты с таким же поведением. Так работает некая оптимизация, хотя на мой взгляд это совершенно лишнее. С другой стороны, никак не выйдет поместив на стандартное окно свою кнопку радостно работать с ней и после загрузки новой игры. Не выйдет! Более того, это может вызвать проблемы даже после того, как инвентарь просто скрылся и открылся заново. Дело в том, что окно инвентаря экспортировано самым минимальным образом. После того, как оно скрывается, скриптовая обёртка для него благополучно помирает (несмотря на то, что внутренний объект остаётся). Если вы не сохранили нигде ссылку на кнопку, то уже никак не вытащить обратно. Если сохранили, то нет никакой уверенности, что в этой ситуации всё работает согласованно, поскольку такого рода трюки никак не были предсмотрены разрабами. Так что нет никаких гарантий, что ваша кнопка будет работать как надо. Я бы предпочёл поступать по возможности аккуратнее: открылось окно - навесили кнопку, закрылось - тут-же отцепили и почистили за собой. Собственно я так и сделал, и проблема вроде как решилась. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Garry_Galler 7 Опубликовано 25 Июня 2010 Поделиться Опубликовано 25 Июня 2010 (изменено) malandrinus вот уже пару часов пытаюсь понять как получить объект моих кнопок - дабы применить к ним GetCheck() -узнать текущее состояние и SetCheck(true) - восстановить нажатие если оно было. Ничего не выходит - не через обращение к статику (к которому кнопки приаттачены) не через обращение к окну инвентаря, не через обращение собственно к окну моего класса. Выходит нужно каждый раз объект кнопок при создании запоминать и записывать? вот так правильно будет записать? btn = CUICheckButton() btn:SetAutoDelete(true) btn:SetWindowName("check_button_1") -- используем переданный индекс для наименования кнопки btn:Init(150,160,113,21) btn:SetText("Удаление объектов") btn:SetTextAlign(CGameFont.alCenter) btn:SetTextX(5) rec_wnd:Register(btn) stat:AttachChild(btn) table.insert(TBtn,"check_button_1",btn) -- запишем в табличку объект первой кнопки ------------------------------------------------------------------------------------------------------------------------------------------------ в общем восстановление состояния кнопок я сделал - (надо было делать конечно не через insert, а TBtn["check_button_1"]= btn но чертов вылет при перезагрузке по прежнему присутствует. stack trace: 001B:7C812AFB kernel32.dll 001B:78158E89 MSVCR80.dll, EH_prolog() 001B:78159082 MSVCR80.dll, _RTCastToVoid() 001B:0353464C xrGame.dll 001B:03543550 xrGame.dll 001B:007BC2F8 XRLUA.DLL, lua_yield() Изменено 25 Июня 2010 пользователем Garry_Galler Ссылка на комментарий
Gonarh 5 Опубликовано 25 Июня 2010 Поделиться Опубликовано 25 Июня 2010 (изменено) Не знаю как вы мужики, а я от чекбоксов отказался, нихрена оно не работает... сделал изменение цвета текста простого батона в зависимости от булевы (красный - фэлс, зелёный - тру) Изменено 25 Июня 2010 пользователем Gonarh 118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105 Ссылка на комментарий
lekzd 1 Опубликовано 25 Июня 2010 Поделиться Опубликовано 25 Июня 2010 Kirag, Вполне возможно. Почему конфиг фонарика находится по адресу config\models\objects\light_night.ltx? Правильно, он прописан инклудом в модели фонарика! Сделать копию модели фонарика, но прописать другой файл конфига. Вуаля! Остаются мелочи - подменить фонарик скриптом и прописать его в конфигах актора и НПС в attachable_items, чтобы работал. На акторе разница заметна сразу, на НПС, если выдать новый при уже включенном фонарике - после С/Л, и надо скрипты юза фонарика ковырять. А фиг вам! Если игра заметит, что в конфигах два или более фонарика - сразу вылет, проверено Добавлено через 12 мин.: ФеНиКс, Каким образом НПС реагируют на игру гитары другого НПСа? это логика или скрипт? Что я имею в виду: когда нпс играет на гитаре, то другие(другой) оценивает его игру либо "+"(похвала;пример:"Ну, ты мастер" либо"-"(недовольство;пример:"Кончай уже, Рихтор...!", как это происходит? в скриптах 1935-го билда все было объяснено: У гулага костра есть несколько схем с болтовней - они рандомно меняются, и отыгранная запоминается, чтобы не повторялась. Схема анекдота проста - одному НеПиСю вдруг приспичивает схохмить и он начинает говорить и в гулаге там что-то помечается (остальные сталкеры, которым тоже приспичит в этот момент проверяют отмечено ли в гулаге, что кто-о говорит), после окончания фразы уже движком выдается двум сталкерам реакции на шутку i-igroman.ru - Мой, принципиально новый сайт о компьютерных играх Ссылка на комментарий
valdemar093 0 Опубликовано 26 Июня 2010 Поделиться Опубликовано 26 Июня 2010 Помогите разобраться с функцией(функция из скрипта динамических аномалий): function anomaly_position_choice(lname, psy) if not lname then lname = level.name() end if not level_vertexes[lname] or level_vertexes[lname][3] == 0 then return false end local gvn,gvx,lvx = level_vertexes[lname][1], level_vertexes[lname][2], level_vertexes[lname][3] local new_lv = math.random(1,lvx) local pos = level.vertex_position(new_lv) while check_lvids_forbidden(new_lv) or chek_exclusion_position(pos, lname, psy) do new_lv = math.random(1,lvx) pos = level.vertex_position(new_lv) end local new_gv = 0 local min_dist = 100000 -- подбираем геймвертекс for a = gvn, gvx do local tmp = game_graph():vertex(a):game_point() if tmp:distance_to(pos) < min_dist then min_dist = tmp:distance_to(pos) new_gv = a end end if new_gv > 0 and game_graph():valid_vertex_id(new_gv) then return pos, new_lv, new_gv else return false end end Почему то именно при вычислении game_vertex(в спойлере выделено красным) происходит вылет вот с таким логом: Expression : I != levels().end() Function : GameGraph::CHeader::level File : e:\stalker\sources\trunk\xr_3da\xrgame\game_graph_inline.h Line : 171 Description : there is no specified level in the game graph : 61 Вылет стабилен, от местонахождения и локации не зависит. Подскажите, как можно исправить Ссылка на комментарий
_Призрак_ 11 Опубликовано 26 Июня 2010 Поделиться Опубликовано 26 Июня 2010 феникс ты вроде искал как сделать удар неписем гг? первой ремаркой все понятно. Переход ко второй на дистанции ближе 2 метров. [remark@punch] anim = punch snd = cit_jail_guard_sneer meet = meet@punch target = actor on_signal = sound_end| %=run_cam_effector(fatigue)% on_timer = 60000| remark@doctor_wakeup %=run_postprocess(deadcity_wake:1777:false)% danger = danger_condition [meet@punch] meet_state = 5|hide_s_left@wait| 4|hide_s_right@wait meet_state_wpn = 5|backoff2@threat_back victim = 10|actor victim_wpn = 10|actor use = true use_wpn = true meet_dialog = escape_lager_guard_start_dialog punch– анимка удара рукой (или прикладом). Так как я не специалист по боксу, то не скажу точно как именно называется этот удар с правой в челюсть. Если поставите ее в meet_state_wpn на дистанции 2 метра - ГГ получит реальный удар в морду прикладом ствола. Так как я эксперементировал на своем торговце - то он (будучи безоружным) бил чисто кулаком. А если вместо запуска анимации камеры %=run_cam_effector(fatigue)% поставите запуск функции %=killactor%, то НПС кинется вас убивать. Freedom Ссылка на комментарий
Garry_Galler 7 Опубликовано 26 Июня 2010 Поделиться Опубликовано 26 Июня 2010 _Призрак_ Ну вообще ФеНиКс'у нужно не это (ты так и не понял что он хочет сделать - не через логику отдельных NPC ) - а об анимке punch он осведомлен - тем более что это моя статья и он ее читал на СП Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти