Malandrinus 615 Опубликовано 6 Февраля 2013 Поделиться Опубликовано 6 Февраля 2013 Коли так, то у него наклон получить сложнее будет. Это же не объект, а всего лишь кость худа. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
*Shoker* 322 Опубликовано 6 Февраля 2013 Поделиться Опубликовано 6 Февраля 2013 (изменено) Пытаюсь допилить 3D-гильзы от выстрелов. Механизм уже готов для ГГ, сейчас вот адаптирую схему под НПС, в связи с тем нет возможности использовать векторы от камеры =\ В принципе в момент выстрела ствол обычно смотрит ровно, но ведь НПС может стрелять и из укрытия вслепую, но в принципе это всё довольно редкие события поэтому наличие таких мелких "недоработок" в принципе не критично. Дирекция мне нужна чтобы указать в какую сторону отлететь гильзе (для хита) X-Ray ext применять не хочу, также можно было бы ещё просто в оружии добавить новые кости (одна у затвора, другая левее) и через них считать направляющий вектор, но в обоих случаях схема перестаёт быть универсальной. malandrinus Я именно про оружие в руках НПС, а не про худ - с худом то как раз проблем нету Просто я тестировал с камерой игрока т.к у меня скрипт был под неё настроен + можно было сравнить получившиеся векторы с "эталонными" от device() Изменено 6 Февраля 2013 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
antreg 178 Опубликовано 10 Февраля 2013 Поделиться Опубликовано 10 Февраля 2013 (изменено) antreg, я не думаю, что ваш вопрос уместен в этой теме. Поискав нужное вам в файлах игры, найдя рестриктор, после которого активируется сцена, я наткнулся на следующий файл логики: config/scripts/agr/agr_knockdown.ltx Вопрос более чем уместен в этой теме. Алгоритмы из agr_knockdown.ltx не являются решением вышеописанной задачи. Задача совсем другая. Более чем НЕ уместен! К скриптам не относится не коим образом. Либо меняй постановку задачи либо пиши в "ковырялку", хотя абсолютно не за чем - решается с помощью кат сцены. ColR_iT Изменено 10 Февраля 2013 пользователем ColR_iT "Тайные Тропы 2" техподдержка "Ф.О.Т.О.Г.Р.А.Ф" техподдержка Ссылка на комментарий
Старлей 88 Опубликовано 12 Февраля 2013 Поделиться Опубликовано 12 Февраля 2013 (изменено) Есть такой мод на ЧН "Наемники", позволяет нанимать отряды. Этот мод добавлялся в разные солянки, но у всех одна и та же проблема, вылет при попыке нанять отряд: FATAL ERROR [error]Expression : fatal error [error]Function : CScriptEngine::lua_error [error]File : E:\priquel\sources\engine\xrServerEntities\script_engine.cpp [error]Line : 180 [error]Description : [error]Arguments : LUA error: ...er clear sky\gamedata\scripts\actor_need_help.script:744: attempt to index field '?' (a nil value) stack trace: Что ж идем туда, куда нас послали: в 744 строку скрипта. smart = squad.board.smarts[v].smrt Это из куска функции, в функцию передается параметр squad, который равен local se_npc = alife():object(npc:id()) local squad = se_npc.board.squads[se_npc.squad_id] Так вот вопрос какое значение он не может получить? Подскажите, или хотя бы пошлите меня туда, куда ссылается smart = squad.board.smarts[v].smrt на какую там функцию, или скрипт. Вот сам скрипт целиком: http://yadi.sk/d/Ob8RCGAn2ZHOG Изменено 12 Февраля 2013 пользователем Старлей 1 1 Ray Of Hope - кооператив сталкера OldStory Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 13 Февраля 2013 Поделиться Опубликовано 13 Февраля 2013 (изменено) Нашел старый скрипт от колгомора для возрождения НПЦ. Вот он- local need_update = 0 local heart = nil local id function on_item_drop(item) if item:section() ~= "mega_heart" then return end --dbg.log("RES: on_item_drop item=%s", item:name()) heart = item need_update = 1 end function update() if need_update == 0 then return end --dbg.log("RES: update stage=%s", need_update) if need_update == 1 then local obj = heart:parent() if obj == nil then --dbg.log("RES: only drop. return") return end id = obj:id() local inv = level.main_input_receiver() if inv ~= nil then level.start_stop_menu(inv, false) --dbg.log("RES: close inv") end amk.convert_npc[id] = true local sim = alife () sim:set_switch_online (id, false) sim:set_switch_offline (id, true) --dbg.log("RES: [%s] move offline", obj:name()) need_update = 2 elseif need_update == 2 then --dbg.log("RES: update 2") local obj = level.object_by_id(id) if obj == nil then --dbg.log("RES: real move offline") else --dbg.log("RES: wait offline") return end --dbg.log("RES: update 3") local sobj = alife():object(id) --dbg.log("RES: update 4") t = amk.read_stalker_params(sobj) --dbg.log("RES: update 5") t.health=0.1 t.killerid=65535 for i=1,8 do t.game_death_time[i] = 0 end t.updhealth = 0.1 t.skeleton_flags=0 --dbg.log("RES: update 6") amk.write_stalker_params(t, sobj) --dbg.log("RES: repack packet") need_update = 0 end Если положить арт нпц то как и положенно закроется меню рюкзака но нпц возраждатся не хочет. Почему не пойму. Может потому что я этого нпц сам делал и у него id нету? Изменено 14 Февраля 2013 пользователем ColR_iT Не соответствует правилам. Ссылка на комментарий
*Shoker* 322 Опубликовано 13 Февраля 2013 Поделиться Опубликовано 13 Февраля 2013 Старлей Видимо скрипт ни в одном моде не тестировали [size=4]local smart_ids = {4869,209}[/size] for k,v in pairs(smart_ids) do smart = squad.board.smarts[v].smrt Таблица smarts находится в скрипте sim_board.script --' Таблица содержащая смарты и данные о них в формате: --' smart = {smrt, targets = {}, dangers = {}, squads = {}, stayed_squad_quan = 0} self.smarts = {} И она в качестве индекса содержит id (идентификатор) объекта (смарта) self.smarts[obj.id] = ... Который при КАЖДОЙ новой игре всегда разный. (здесь видимо спутали со story id) В скрипте же идёт попытка получить смарт по его id, который к новой игре уже не применим, т.к объекта с таким id уже просто не существует. squad.board.smarts[v] Где v = 4869 - нет такого смарта, что и генерирует вылет при попытке далее взять значение поля smrt _______________________________________________ А вообще при беглом осмотре там какой то бред получается, скрипт скорее всего не доделан и как он попал в моды вообще не понятно. В частности вся суть function update_squad(squad,pflag) сводится к тому, чтобы проверить два указанных смарта с id {4869,209}, (притом что при новой игре эти значения уже будут не верны, что наводит на мысль что автор скрипта просто тестировал что то своё) Далее если смарт находится не на одном уровне с игроком, то из него выгоняются все отряды кроме одного, который был передан в функцию. Как вариант попробуй сократить функцию до: [/size] function update_squad(squad,pflag) for k,v in pairs(squad.squad_npc) do local npc = level.object_by_id(k) if npc ~= nil then npc:remove_all_restrictions() end end end М.б всё заработает. CRAZY_STALKER666 Раскоментируй везде dbg.log (если у тебя в моде есть такой скрипт, в противном случае выводи сообщения любым другим способом) и смотри в консоли\в игре в каком моменте скрипт перестаёт выполняться. 2 Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
CRAZY_STALKER666 36 Опубликовано 14 Февраля 2013 Поделиться Опубликовано 14 Февраля 2013 (изменено) Shoker Обрывается на этом - amk.convert_npc[id] = true local sim = alife () sim:set_switch_online (id, false) sim:set_switch_offline (id, true) Как понял? Кргда ложиш стаалкеру в инвертарь арт он исправно закрывается. А далее простой. Раз уж взялся писать в данную тему - "шапку" прочти, пожалуйста! ColR_iT Изменено 14 Февраля 2013 пользователем ColR_iT Не соответствует правилам. Ссылка на комментарий
Shredder 49 Опубликовано 14 Февраля 2013 Поделиться Опубликовано 14 Февраля 2013 sim:set_switch_online (id, false) sim:set_switch_offline (id, true) Добавь проверку на то, что id не nil и и в игре существует такой объект (alife():object(id)). Не могу точно утверждать, но у меня в ЗП был случай, когда я долго искал ошибку, оказалось что передавал в alife():object() nil. Вылета не было, но биндер зависал. Ссылка на комментарий
proger_Dencheek 6 Опубликовано 14 Февраля 2013 Поделиться Опубликовано 14 Февраля 2013 Пожалуйста, подскажите, таймер такого вида будет работать, через месяц игрового времени: --Таймер игрового времени function g_timer(day, hou, min, void) if day == nil or hou == nil or min == nil then den.cout("den.g_timer(day=nil or hou=nil or min=nil)") return nil end local n_day = level.get_time_days() + day local n_hou = level.get_time_hours() + hou local n_min = level.get_time_minutes() + min if n_hou > 24 then n_hou = n_hou - 24 end if n_min > 60 then n_min = n_min - 60 end if n_day > 30 then n_day = n_day - 30 end local col = den.load_variable("den_g_timers_col") if col == nil then col = 0 end col = col + 1 den.save_variable("dgtd_"..col, n_day) den.save_variable("dgth_"..col, n_hou) den.save_variable("dgtm_"..col, n_min) if void ~= nil then den.save_variable("dgtf_"..col, void) else den.cout("den.g_timer(void=nil)") end den.save_variable("den_g_timers_col", col) end --Таймер реального времени function timer(val, void) if val ~= nil then local col = den.load_variable("den_timer_col") if col == nil then col = 0 end col = col + 1 den.save_variable("drtt_"..col, game.time() + val * 1000 * system_ini():r_float("alife","time_factor")) if void ~= nil then den.save_variable("drtf_"..col, void) else den.cout("den.timer(void=nil)") end den.save_variable("den_timer_col", col) else den.cout("den.timer(val=nil)") end end local day, hou, min = 0, 0, 0 local col = 0 --Обновление таймеров function update() --Таймер игрового времени col = den.load_variable("den_g_timers_col") if col ~= nil then for key=1,col do if level.get_time_days() == den.load_variable("dgtd_"..key) and level.get_time_hours() == den.load_variable("dgth_"..key) and level.get_time_minutes() == den.load_variable("dgtm_"..key) then den.del_variable("dgtd_"..key) den.del_variable("dgth_"..key) den.del_variable("dgtm_"..key) local void = den.load_variable("dgtf_"..key) if void ~= nil then den.del_variable("dgtf_"..key) den.save_variable("den_g_timers_col", col - 1) for val=key,col do den.save_variable("dgtd_"..val, den.load_variable("dgtd_"..val+1)) den.save_variable("dgth_"..val, den.load_variable("dgth_"..val+1)) den.save_variable("dgtm_"..val, den.load_variable("dgtm_"..val+1)) den.save_variable("dgtf_"..val, den.load_variable("dgtf_"..val+1)) end if this[void] ~= nil then this[void]() else den.cout("den_timer-this["..void.."]=nil") end end end end end --Таймер реального времени col = den.load_variable("den_timer_col") if col ~= nil then for key=1,col do if game.time() >= den.load_variable("drtt_"..key) then den.del_variable("drtt_"..key) local void = den.load_variable("drtf_"..key) if void ~= nil then den.del_variable("drtf_"..key) den.save_variable("den_timer_col", col - 1) for val=key,col do den.save_variable("drtt_"..val, den.load_variable("drtt_"..val+1)) den.save_variable("drtf_"..val, den.load_variable("drtf_"..val+1)) end if this[void] ~= nil then this[void]() else den.cout("den_timer-this["..void.."]=nil") end end end end end end Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 17 Февраля 2013 Поделиться Опубликовано 17 Февраля 2013 В amk есть функция amk_mod.spawn_unspawned_respawners() Она крейтит эти самые респавнеры, и пишет им параметры в customdata. Затем они подхватываются, и записанное волшебным образом можно считать из obj:spawn_ini(). Но как сделан этот фокус ? И, кстати, в чем смысл функции se_respawn.reinit_spawner_params(), если на момент ее вызова фокус еще не произошел ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Shredder 49 Опубликовано 17 Февраля 2013 Поделиться Опубликовано 17 Февраля 2013 А где фокус? obj:spawn_ini() читает эту самую custom_dat'у, которую записали скорее всего нет-пакетом. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 18 Февраля 2013 Поделиться Опубликовано 18 Февраля 2013 А где фокус? Разобрался. Фокус был в том, что :init() дергается сразу же, как объект создан. Или непосредственно прямо в alife():create(), или при возвращении из нее. Соответственно, obj:spawn_ini() возвращало первый раз пустую строку, и только потом уже можно записать customdata. Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
ХuMuK 0 Опубликовано 19 Февраля 2013 Поделиться Опубликовано 19 Февраля 2013 С помощью какого класса можно создать окно со скроллом? Как в ПДА в энциклопедии. Ссылка на комментарий
Shredder 49 Опубликовано 19 Февраля 2013 Поделиться Опубликовано 19 Февраля 2013 CUIScrollView, будет только вертикальный скролл. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 19 Февраля 2013 Поделиться Опубликовано 19 Февраля 2013 Вот интересно, в bind_physic_object.script в generic_physics_binder:update() все нормально с установкой коллбэков ? В оригинале имеется в виду. Действительно есть такие events, после которых их надо заново выставлять в каждом апдейте ? А сбрасывать их при дестрое не надо ? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Alex Rinic 20 Опубликовано 27 Февраля 2013 Поделиться Опубликовано 27 Февраля 2013 Доброго времени суток. Возник вопрос по внедрению ПНВ через скрипт : А) Возможно ли узнать, включен ли встроенный в костюм ПНВ, считав net_packet() (т.е. какой нет пакет/значение пакета, если таковые существуют, нужны, чтобы узнать включен ли ПНВ) ? Б) Возможно ли узнать, включен ли встроенный в костюм ПНВ из pstor актора при помощи xr_logic.pstor_retrieve() ? В) Вопрос связан с предыдущими двумя : Если существует положительный ответ на пункт А или Б , то есть ли возможность принудительно (через запись в pstor / net_packet) включить / выключить ПНВ ? Ничто общее из частного не следует. Ссылка на комментарий
Viнt@rь 50 Опубликовано 28 Февраля 2013 Поделиться Опубликовано 28 Февраля 2013 Alex Rinic, а покопаться по исходным(ПЫСовским) скриптам слабо? Только дам наводку, xr_effects.script, в нем есть нужные тебе функции(ну прям в 200% точности, то, что тебе нужно, судя по вопросам). И мб еще что интересного для себя найдешь... GUI для конвертера от бардака(всего и вся в форматы сдк) Полезный утиль-"Utilits pack(mod)" Ссылка на комментарий
Alex Rinic 20 Опубликовано 1 Марта 2013 Поделиться Опубликовано 1 Марта 2013 (изменено) Viнt@rь , если это намёк на function main() game.start_tutorial("part_1_pda") end function pnv1() level.add_pp_effector("nightvision_bad.ppe", 1034, true) end function pnv2() level.add_pp_effector("nightvision_good.ppe", 1034, true) end function clear() level.remove_pp_effector(1034) end в test.script , то это не то, что мне нужно , так как требуется реализация именно включения - выключения ПНВ через чтение/запись Pstor или нет пакет, а не просто удалениe эффектора nightvision_bad/nightvision_good.ppe через level.remove_pp_effector() ... UPd function run_postprocess(actor, npc, p) if p[1] then local loop, num = false, (2000 + math.random(100)) if p[2] and type(p[2]) == "number" and p[2] > 0 then num = p[2] end if p[3] and p[3] == "true" then loop = true end level.add_pp_effector(p[1] .. ".ppe", num, loop) end end function stop_postprocess(actor, npc, p) if p[1] and type(p[1]) == "number" and p[1] > 0 then level.remove_pp_effector(p[1]) end end сюда тоже прошу не отсылать ... просьба модераторам объединить мои посты в один ... Изменено 1 Марта 2013 пользователем Alex Rinic Ничто общее из частного не следует. Ссылка на комментарий
Artos 99 Опубликовано 1 Марта 2013 Поделиться Опубликовано 1 Марта 2013 (изменено) Alex Rinic, ответ нужно было искать в этой теме. Во-первых, незашоривайся. 'Pstor' - это всего лишь (суб)табличка в которую 'кто-то что-то' заносит и она запоминается в сэйвах. Подобная мелочевка (nightvision) конечно же туда не пишется, иначе бы никакого объема нет-пакета не хватит... Все подобное обрабатывается и запоминается движком в самом объекте. А вот если бы заглянул в посты по нет-пакетам и почитал бы повнимательнее, то мог бы найти не раз упоминавшуюся табличку флагов, в частности: torch_flags.Active = 1 torch_flags.NightVisionActive = 2 --/< то что ищешь! torch_flags.Unknown = 4 Т.о. читая нет-пакет фонарика (cse_alife_item_torch), который у актора в соотв.слоте (а не в рюкзаке!), по бит-флагу можешь узнавать, включен ли 'nightvision'. А вот изменять, т.е. устанавливать требуемое состояние для 'nightvision' - это уже посложнее, т.к. изменение нет-пакета производится с серверным объектом фонарика, и для того, чтобы изменения вступили в силу потребуется фонарик отправить в оффлайн и вернуть обратно... Т.е. потребуется "отобрать" у актора его слотовый фонарик и после появления в онлайне - вернуть обратно в слот. (дальше сам экспериментируй, модули работы с нет-пакетами и подобными флагами доступны в инете). Изменено 1 Марта 2013 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Viнt@rь 50 Опубликовано 1 Марта 2013 Поделиться Опубликовано 1 Марта 2013 (изменено) Alex Rinic, когда задаешь вопрос, пиши плз по какой версии игры? в ЗП есть функции контроля фонариком и пнв в xr_effects. Оффтоп Artos, ты вернулся? Изменено 1 Марта 2013 пользователем Viнt@rь GUI для конвертера от бардака(всего и вся в форматы сдк) Полезный утиль-"Utilits pack(mod)" Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти