Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском. Возможно, ответ на Ваш вопрос уже есть. Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
GROM_27 1 Опубликовано 26 Января 2017 Поделиться Опубликовано 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 Ссылка на комментарий
naxac 2 441 Опубликовано 26 Января 2017 Поделиться Опубликовано 26 Января 2017 @GROM_27, файл подключается через систему событий ОГСЕ к каллбэку на нажатие клавиш в bind_stalker. Так как у тебя в моде ее, вернее всего, нет, то нужно просто добавить в bind_stalker этот каллбэк и в него добавить вызов ogse_grenade_switcher.on_key_down(dik, dik_to_bind(dik)). Ну, и убрать лишние секции из списка гранат. И функцию ASSERT закомментировать, т.к. у тебя ее, наверно, тоже нет. Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
GROM_27 1 Опубликовано 26 Января 2017 Поделиться Опубликовано 26 Января 2017 Каллбэк на кнопки выглядит таким образом? self.object:set_callback(callback_ex.on_mouse_wheel, nil) Тут как я понимаю колёсико мышки) Ссылка на комментарий
naxac 2 441 Опубликовано 26 Января 2017 Поделиться Опубликовано 26 Января 2017 @GROM_27, ищи нечто подобное, но про key_press или key_down. Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
GROM_27 1 Опубликовано 26 Января 2017 Поделиться Опубликовано 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 Сегодня читал разную информацию про скрипты, ну пока мало что понял, буду стараться освоить) а пока в этих кодах не разберусь без помощи) Ссылка на комментарий
naxac 2 441 Опубликовано 26 Января 2017 Поделиться Опубликовано 26 Января 2017 (изменено) Оно, ага. Значит, теперь тебе надо найти число, которому равен callback_ex.on_key_press. Поищи таблицу callback_ex по скриптам, в ней нужно значене поля on_key_press. Его и пиши в биндере. -- это в net_destroy self.object:set_callback(число, nil) -- это в reinit self.object:set_callback(число, self.on_key, self) -- а это где-нибудь вне функций. function actor_binder:on_key(key) ogse_grenade_switcher.on_key_down(key, dik_to_bind(key)) endЕсли не будет работать, то еще в начале net_spawn добавить:set_extension_flags(16) И в конце net_destroy: set_extension_flags(0) Изменено 26 Января 2017 пользователем naxac Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
GROM_27 1 Опубликовано 26 Января 2017 Поделиться Опубликовано 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) Ссылка на комментарий
MJRamon 0 Опубликовано 26 Января 2017 Поделиться Опубликовано 26 Января 2017 (изменено) Собственно, есть урок по вызову скриптов через горячую клаавишу без выхода в меню: http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B0%D0%BC_%D0%B3%D0%BE%D1%80%D1%8F%D1%87%D0%B8%D1%85_%D0%BA%D0%BD%D0%BE%D0%BF%D0%BE%D0%BA._%D0%A7%D0%B0%D1%81%D1%82%D1%8C_3. Куда данный скрипт нужно подключать? Желательно дать конкретный пример для новичка К сожалению, отредактировать предыдущее сообщение более не могу. В ссылке точка в конце обязательна. Тык. Изменено 26 Января 2017 пользователем MJRamon Ссылка на комментарий
GROM_27 1 Опубликовано 26 Января 2017 Поделиться Опубликовано 26 Января 2017 Спасибо! Посмотрю, может разберусь) Подключать я это хочу к моду, который пытаюсь делать) Реализовать правку движка на новые слоты не удалось, мне посоветовали взять папку bin от OGSE, новы слоты появились, но как оказалось в движке OGSE есть какой-то баг по переключению типа гранат, но в моде есть скрипт, позволяющий имправить эту проблему, вот я пытаюсь найти как мне это сделать Ссылка на комментарий
naxac 2 441 Опубликовано 27 Января 2017 Поделиться Опубликовано 27 Января 2017 (изменено) @GROM_27, так не надо все удалять из функций в bind_stalker. Допиши, чего не хватает, и все. И про set_extensions_flags не забудь. С гранатами - не баг, просто отключено движковое переключение из-за того, что оно глючное само по себе. Изменено 27 Января 2017 пользователем naxac Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
GROM_27 1 Опубликовано 27 Января 2017 Поделиться Опубликовано 27 Января 2017 По поводу удалять или нет, ну тот код который я скинул выше, так вот в моём bind_stalker из чистого ТЧ, такого кода вообще я не видел, тогда я его целиком из OGSE получается копируют и вставляют в свой bind_stalker? Ссылка на комментарий
naxac 2 441 Опубликовано 27 Января 2017 Поделиться Опубликовано 27 Января 2017 (изменено) Конечно, точно такого нет. Но методы класса биндера-то те же самые есть: net_destroy, reinit, net_spawn - в них и добавляй по аналогии с другими. Я ж тебе писал. function actor_binder:net_spawn(data) -- вот это есть set_extensions_flags(16) -- это добавить ... end -- это тоже есть ... function actor_binder:reinit() - есть ... self.object:set_callback(123, self.on_key, self) -- добавить ... end -- есть ... function actor_binder:net_destroy() -- есть set_extensions_flags(0) -- добавить ... self.object:set_callback(123, nil) - добавить ... end -- естьП.с.: где многоточие - это типа пропущены куски кода, не надо его писать. Вроде всё понятно жи. Изменено 27 Января 2017 пользователем naxac 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
GROM_27 1 Опубликовано 27 Января 2017 Поделиться Опубликовано 27 Января 2017 Сегодня пробовать буду :-) Может не совсем по теме, но где можно найти самые основы написания скриптов как этому научиться, есть статьи для тех кто вообще ничего не знает) или может вообще начать изучение например с Турбо Паскаль?))) Мне один человек это посоветовал, говорит что зная Турбо Паскаль, у меня уже основа для понимания будет) Ссылка на комментарий
naxac 2 441 Опубликовано 27 Января 2017 Поделиться Опубликовано 27 Января 2017 @GROM_27, Stalke Inside + справочное руководство по Lua + изучение файлов игры + гугл + поиск по форуму + побольше свободного времени. Больше ничего и не надо. 1 1 1 Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
GROM_27 1 Опубликовано 27 Января 2017 Поделиться Опубликовано 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---------------------------------------------------------------------------------------------------------------------- Ничего не удалял, просто добавил строки Ссылка на комментарий
gam 117 Опубликовано 27 Января 2017 Поделиться Опубликовано 27 Января 2017 GROM_27. Возможно есть ошибка в записи set_extensions_flags(16) - нужно set_extensions_flags(15). Но не факт, в файле бинд_сталкер от OGSE у меня проставленно это значение. 1 Ссылка на комментарий
GROM_27 1 Опубликовано 27 Января 2017 Поделиться Опубликовано 27 Января 2017 Попробую поменять значение на 15 К сожалению не помогло, всё так же. Почему-то на счетчике показывается только количество того вида гранат которая в руке, если имеется Ф1 - 5 шт и РГД-5 - 7 шт, если у ГГ в руке будет к примеру РГД, то на счетчике будет 7, а не 12, это так и должно быть? Я просто не помню как в оригинале, патроны знаю считается общее количество всех типов, обычные и бронебойные общим количеством. Ссылка на комментарий
UriZzz 1 004 Опубликовано 27 Января 2017 Поделиться Опубликовано 27 Января 2017 (изменено) @GROM_27, даже и незнаю, считать это недостатком или фичей?))) скорее всего это одна из правок движка, по моему в чн потроны и гранаты при подсчете тоже не разбивались по типам, а вот в зп такое есть. А как сейчас с потронами у тебя, так же или постарому? Изменено 27 Января 2017 пользователем UriZzz Моя нычка, Нычка в арендованном у Опричника холодильнике Мы хорошие ребята, жаль патронов маловато:) Ссылка на комментарий
GROM_27 1 Опубликовано 27 Января 2017 Поделиться Опубликовано 27 Января 2017 Патроны всех типов и гранаты для подствольника считаются общим количеством и переключение работает, проблема только с ручными гранатами Ссылка на комментарий
Firewind 623 Опубликовано 27 Января 2017 Поделиться Опубликовано 27 Января 2017 это так и должно быть? Гранаты разного типа считаются по отдельности. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти