GROM_27 1 Опубликовано 20 Января 2017 Возможность стрельбы на классе бинокля, это получается в слот бинокля можно например поставить какое-нибудь оружие? Поделиться этим сообщением Ссылка на сообщение
GROM_27 1 Опубликовано 20 Января 2017 А если в игре будет несколько биноклей, возможно реализовать чтобы допустим один бинокль имел захват цели и динамический зум, а другой бинокль был простым, всё это в конфигах приписывается или это тоже движковое? Поделиться этим сообщением Ссылка на сообщение
GROM_27 1 Опубликовано 20 Января 2017 Нож на классе бинокля, это как? В чём его отличие от обычного? Поделиться этим сообщением Ссылка на сообщение
GROM_27 1 Опубликовано 25 Января 2017 Всем привет! Может не совсем туда пишу, но кто-нибудь может подсказать какой файл отвечает за смену типа гранат, РГД-5 на Ф-1 с помощью кнопки Y как патроны переключаются например обычные и бронебойные, дело в том что что пытаюсь собрать свой мод и учась по ходу дела, со скриптами пока проблемы, всё что совмещаю сравниваю файлы в программе WinMerge, то что уже собрал работает, но при перемещении гранат на пояс, считаются только те гранаты тип которой в руке, допустим на поясе 5 шт РГД-5 и 5 шт Ф-1, всего 10, но если у ГГ в руке допустим Ф-1 но на счетчике будет 5, а не десять и при этом не переключается тип гранат, подозревают что что-то не так в bind_stalker.script. Понимаю что то что я там намутил, это моих рук дело и косяк мой, но может кто подскажет на примере обычного ТЧ, как работает и где прописывается смена типа гранат. Патроны и гранаты для подствольника у меня работают. Поделиться этим сообщением Ссылка на сообщение
GROM_27 1 Опубликовано 25 Января 2017 Подскажите пожалуйста как это можно вылечит? Expression : fatal errorFunction : CResourceManager::_GetBlenderFile : E:\stalker\sources\trunk\xr_3da\ResourceManager.cppLine : 49Description : Arguments : Shader 'hud\scope' not found in library. Понимаю что не хватает шейдера вроде, а вот где именно, в самой папке shaders или где-то ещё? Поделиться этим сообщением Ссылка на сообщение
GROM_27 1 Опубликовано 25 Января 2017 Такая ошибка возникает после того как я закинул в папку bin файл xrGame.dll из другого мода, посоветовали что так можно реализовать новые слоты, если с правками движка ничего не выходит, в итоге у меня вылет связанный с шейдеров, а вот если я кидаю целую папку bin от мода, то всё запускается, есть новые слоты, но почему-то гранаты перестают переключаться РГД-5 и Ф1, почему-то имея в инвентаре допустим по 5 гранат, всего 10, игра считает только те гранаты, вид которой в руке ГГ, при том что в моде откуда папка bin взята с гранатами всё нормально, в чём может быть причина? Поделиться этим сообщением Ссылка на сообщение
GROM_27 1 Опубликовано 25 Января 2017 Если быть точнее то O.G.S.E. 0.6.9.3 Final 1.04 А за переключение какой файл может отвечать в OGSE, где этот скрипт может быть? Может я ошибаюсь, но может это bind_stalker? Поделиться этим сообщением Ссылка на сообщение
GROM_27 1 Опубликовано 25 Января 2017 Я извиняюсь) но я пока плохо всё это понимаю, если можно подробнее про этот момент, где эти функции искать Поделиться этим сообщением Ссылка на сообщение
GROM_27 1 Опубликовано 26 Января 2017 Кажется нашел файл отвечающий за скриптовое переключение гранат, но при добавлении его в игру ничего не поменялось, как не работало так и не работает, может игра не видит файл, может прописать где-то надо? Посмотрите кто-нибудь пожалуйста, есть тут что-то по переключению или нет, а то я пока в этом не понимаю увы, файл определил по названию ogse_grenade_switcher и то что в нем про гранаты и вроде про клавиши написано, могу ошибаться. Вот содержание function attach(sm)sm:subscribe({signal = "on_key_down", fun = this.on_key_down})endlocal grenades_sequence = {"grenade_f1", "grenade_rgd5", "grenade_light", "grenade_gd-05", "grenade_gas"}local sect2key = {}for i,sec in ipairs(grenades_sequence) do sect2key[sec] = i endfunction on_key_down(key, bind)if bind ~= key_bindings.kWPN_NEXT then return endlocal act = db.actorif act:active_slot() ~= 3 then return endlocal gren = act:active_item()if not gren then return endlocal gren_sec = gren:section()local start_pos = sect2key[gren_sec]ASSERT(start_pos, "ogse_grenade_switcher.on_key_down: unregistered grenade section '"..gren_sec.."'")for pos = start_pos,start_pos+#grenades_sequence-2 dolocal cur_sec = grenades_sequence[math.fmod(pos, #grenades_sequence) + 1]local gren_new = act:object(cur_sec)if gren_new thendb.actor:move_to_ruck(gren)db.actor:move_to_slot_and_activate(gren_new)return trueendendend Поделиться этим сообщением Ссылка на сообщение
GROM_27 1 Опубликовано 26 Января 2017 Каллбэк на кнопки выглядит таким образом? self.object:set_callback(callback_ex.on_mouse_wheel, nil) Тут как я понимаю колёсико мышки) Поделиться этим сообщением Ссылка на сообщение
GROM_27 1 Опубликовано 26 Января 2017 Есть вот такие self.object:set_callback(callback_ex.on_key_press, nil)self.object:set_callback(callback_ex.on_key_press, self.on_key, self) И с key_down function actor_binder:on_key(key)ogse_debug.process_actor("key", 1)ogse.on_key(key, dik_to_bind(key))ogse_debug.process_actor("key", 0)self.am:call("on_key_down", key, dik_to_bind(key))event("key_down"):trigger({key = key, bind = dik_to_bind(key)})end Сегодня читал разную информацию про скрипты, ну пока мало что понял, буду стараться освоить) а пока в этих кодах не разберусь без помощи) Поделиться этим сообщением Ссылка на сообщение
GROM_27 1 Опубликовано 26 Января 2017 Понял, спасибо! Буду пробовать Я так понимаю числа вот эти? -- коды дополнительных колбековcallback_ex = {["on_key_press"] = 123,["on_key_release"] = 124,["on_key_hold"] = 125,["on_mouse_wheel"] = 126,["on_mouse_move"] = 127,["on_belt"] = 130,["on_ruck"] = 131,["on_slot"] = 132,["on_inv_box_put_item"] = 151,["entity_alive_before_hit"] = 152,["dbg_gg_distance_failed"] = 153,["update_addons_visibility"] = 154,["update_hud_addons_visibility"] = 155,["on_before_use_item"] = 156;["pda_contact"] = 180, ["on_key_press"] = 123, В OGSE, в net_destroy вот так всё выглядит function actor_binder:net_destroy()if(actor_stats.remove_from_ranking~=nil)thenactor_stats.remove_from_ranking(self.object:id())end-- game_stats.shutdown ()set_extensions_flags(0)db.del_actor(self.object)sr_light.clean_up ()self.object:set_callback(callback.inventory_info, nil)self.object:set_callback(callback.article_info, nil)self.object:set_callback(callback.on_item_take, nil)self.object:set_callback(callback.on_item_drop, nil)--self.object:set_callback(callback.actor_sleep, nil)self.object:set_callback(callback.task_state, nil)self.object:set_callback(callback.level_border_enter, nil)self.object:set_callback(callback.level_border_exit, nil)self.object:set_callback(callback.take_item_from_box, nil)self.object:set_callback(callback.use_object, nil)self.object:set_callback(callback.on_key_press, nil)self.object:set_callback(callback.on_key_release, nil)self.object:set_callback(callback.on_key_hold, nil)self.object:set_callback(callback.on_mouse_wheel, nil)self.object:set_callback(callback.on_mouse_move, nil)self.object:set_callback(callback.on_belt, nil)self.object:set_callback(callback.on_ruck, nil)self.object:set_callback(callback.on_slot, nil)self.object:set_callback(callback.hit, nil)self.object:set_callback(callback.dbg_gg_distance_failed, nil)self.object:set_callback(callback.entity_alive_before_hit, nil)self.object:set_callback(callback.on_before_use_item, nil)if sr_psy_antenna.psy_antenna thensr_psy_antenna.psy_antenna:destroy()sr_psy_antenna.psy_antenna = falseendxr_sound.stop_all_sound_object()ogse.on_net_destroy()self.am:call("on_destroy")event("actor_destroy"):trigger()end Мне же всё это не нужно, только строка где self.object:set_callback(callback_ex.on_key_press, nil)? Видимо я что-то не так сделал, вот что я сделал function actor_binder:net_destroy()self.object:set_callback(callback_ex.on_key_press, nil)set_extension_flags(0)end----------------------------------------------------------------------------------------------------------------------function actor_binder:reinit()self.object:set_callback(callback_ex.on_key_press, self.on_key, self)endfunction actor_binder:on_key(123)ogse_grenade_switcher.on_key_down(key, dik_to_bind(key))end Получил такой вылет Expression : fatal errorFunction : CScriptEngine::lua_errorFile : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cppLine : 73Description : Arguments : LUA error: ...А.Л.К.Е.Р. Тень Чернобыля\gamedata\scripts\_g.script:20: bad argument #2 to 'format' (string expected, got no value) Поделиться этим сообщением Ссылка на сообщение
GROM_27 1 Опубликовано 26 Января 2017 Спасибо! Посмотрю, может разберусь) Подключать я это хочу к моду, который пытаюсь делать) Реализовать правку движка на новые слоты не удалось, мне посоветовали взять папку bin от OGSE, новы слоты появились, но как оказалось в движке OGSE есть какой-то баг по переключению типа гранат, но в моде есть скрипт, позволяющий имправить эту проблему, вот я пытаюсь найти как мне это сделать Поделиться этим сообщением Ссылка на сообщение
GROM_27 1 Опубликовано 27 Января 2017 По поводу удалять или нет, ну тот код который я скинул выше, так вот в моём bind_stalker из чистого ТЧ, такого кода вообще я не видел, тогда я его целиком из OGSE получается копируют и вставляют в свой bind_stalker? Поделиться этим сообщением Ссылка на сообщение
GROM_27 1 Опубликовано 27 Января 2017 Сегодня пробовать буду :-) Может не совсем по теме, но где можно найти самые основы написания скриптов как этому научиться, есть статьи для тех кто вообще ничего не знает) или может вообще начать изучение например с Турбо Паскаль?))) Мне один человек это посоветовал, говорит что зная Турбо Паскаль, у меня уже основа для понимания будет) Поделиться этим сообщением Ссылка на сообщение
GROM_27 1 Опубликовано 27 Января 2017 Что-то не работает, я думаю может код 123 on_key_press не правильно указан, я его то из OGSE взял, сейчас вспомнил, в чистом ТЧ наверно другой? В OGSE это значение написано в _g.script, в ТЧ в этом файле нет таких значений , видимо где-то в другом файле, а так вот что у меня получилось function actor_binder:net_spawn(data)set_extensions_flags(16)printf("actor net spawn")level.show_indicators()self.bCheckStart = trueself.weapon_hide = false -- спрятано или нет оружие при разговоре.weapon_hide = false -- устанавливаем глобальный дефолтовый флаг.if object_binder.net_spawn(self,data) == false thenreturn falseend function actor_binder:net_destroy()set_extensions_flags(0)if(actor_stats.remove_from_ranking~=nil)thenactor_stats.remove_from_ranking(self.object:id())end-- game_stats.shutdown ()db.del_actor(self.object)sr_light.clean_up ()self.object:set_callback(123, nil)self.object:set_callback(callback.inventory_info, nil)self.object:set_callback(callback.article_info, nil)self.object:set_callback(callback.on_item_take, nil)self.object:set_callback(callback.on_item_drop, nil)--self.object:set_callback(callback.actor_sleep, nil)self.object:set_callback(callback.task_state, nil)self.object:set_callback(callback.level_border_enter, nil)self.object:set_callback(callback.level_border_exit, nil)self.object:set_callback(callback.take_item_from_box, nil)if sr_psy_antenna.psy_antenna thensr_psy_antenna.psy_antenna:destroy()sr_psy_antenna.psy_antenna = falseendxr_sound.stop_all_sound_object()object_binder.net_destroy(self)end function actor_binder:reinit()object_binder.reinit(self)local npc_id = self.object:id()db.storage[npc_id] = { }self.st = db.storage[npc_id]self.st.pstor = nilself.next_restrictors_update_time = -10000self.object:set_callback(123, self.on_key, self)self.object:set_callback(callback.inventory_info, self.info_callback, self)self.object:set_callback(callback.article_info, self.article_callback, self)self.object:set_callback(callback.on_item_take, self.on_item_take, self)self.object:set_callback(callback.on_item_drop, self.on_item_drop, self)self.object:set_callback(callback.trade_sell_buy_item, self.on_trade, self) -- for game stats--self.object:set_callback(callback.actor_sleep, self.sleep_callback, self)self.object:set_callback(callback.task_state, self.task_callback, self)--self.object:set_callback(callback.map_location_added, self.map_location_added_callback, self)self.object:set_callback(callback.level_border_enter, self.level_border_enter, self)self.object:set_callback(callback.level_border_exit, self.level_border_exit, self)self.object:set_callback(callback.take_item_from_box, self.take_item_from_box, self)end----------------------------------------------------------------------------------------------------------------------function actor_binder:on_key(key)ogse_grenade_switcher.on_key_down(key, dik_to_bind(key))end---------------------------------------------------------------------------------------------------------------------- Ничего не удалял, просто добавил строки Поделиться этим сообщением Ссылка на сообщение
GROM_27 1 Опубликовано 27 Января 2017 Попробую поменять значение на 15 К сожалению не помогло, всё так же. Почему-то на счетчике показывается только количество того вида гранат которая в руке, если имеется Ф1 - 5 шт и РГД-5 - 7 шт, если у ГГ в руке будет к примеру РГД, то на счетчике будет 7, а не 12, это так и должно быть? Я просто не помню как в оригинале, патроны знаю считается общее количество всех типов, обычные и бронебойные общим количеством. Поделиться этим сообщением Ссылка на сообщение
GROM_27 1 Опубликовано 27 Января 2017 Патроны всех типов и гранаты для подствольника считаются общим количеством и переключение работает, проблема только с ручными гранатами Поделиться этим сообщением Ссылка на сообщение
GROM_27 1 Опубликовано 27 Января 2017 Ну просто в чистом ТЧ они переключаются клавишей Y как патроны, а сейчас не работает переключение, в OGSE скриптовое переключение сделано Кто знает где в ТЧ прописываются коды калбекков, на подобии как в OGSE? вот пример -- коды дополнительных колбековcallback_ex = {["on_key_press"] = 123,["on_key_release"] = 124,["on_key_hold"] = 125,["on_mouse_wheel"] = 126,["on_mouse_move"] = 127, Или в ТЧ такого нет? Переключение гранат заработало, но когда я поставил мод "Патроны на поясе" происходит вылет без лога после того как я пытаюсь переключить вид гранат, которые уже есть на поясе. Попробовал сделать следующее, взял файл bind_stalker на котором переключение заработало, но там нет мода на пояс и стал из другого bind_stalker который у меня в моде (там есть пояс) перекидывать недостающие строчки сравнивая оба файла в программе WinMerge, удалось выявить что после добавления строки inventory.update() происходит вылет при попытке переключения гранат уже на поясе. Поставил "Гранаты на поясе" получил такой вылет Expression : fatal errorFunction : CScriptEngine::lua_errorFile : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cppLine : 73Description : Arguments : LUA error: ...íîáûëÿ\gamedata\scripts\ogse_grenade_switcher.script:19: attempt to perform arithmetic on local 'start_pos' (a nil value) Поделиться этим сообщением Ссылка на сообщение
GROM_27 1 Опубликовано 27 Января 2017 Ну буду пытаться разбираться) Народ, кто-нибудь знает как реализовать транспорт, с багажником и необходимостью заправки, как в ОГСЕ, Лост Альфа, Новый Арсенал и ещё в некоторых модах, может есть отдельный мини мод на это или статья какая-то по созданию такого транспорта? Поделиться этим сообщением Ссылка на сообщение