Graff46 598 Опубликовано 10 Января 2019 Поделиться Опубликовано 10 Января 2019 (изменено) 14 минут назад, dsh сказал: У меня переименовывается через прямой доступ к свойствам Редактирование движка? Через X-Ray Extensions не сделать? P. S. Пошёл путём "мамкиного хакера" нашел имя ГГ в сейве, поменял с сохранением длины строки, загрузил - работает. P. S.2 Значит клиентский объект (ГГ) получает имя ГГ (своё) из сейва. Интересно как, "напрямую" или через пакет? У нас в методе биндера ГГ на загрузку передаётся поток чтения (reader) врятли в потоке можно данные изменить, а вот у метода сейва, есть полноценный пакет, в который можно было бы что нибудь перезаписать, но какие смещения? Стандартный для ГГ? А ощущение создается будто бы в метод сейва вообще передается не тот пакет, который мы получим от ГГ методом STATE_Write . Изменено 10 Января 2019 пользователем Graff46 Ссылка на комментарий
dsh 3 824 Опубликовано 10 Января 2019 Поделиться Опубликовано 10 Января 2019 22 minutes ago, Graff46 said: Редактирование движка? Через X-Ray Extensions не сделать? Не знаю. Я экспортировал эти свойства для скриптов. 23 minutes ago, Graff46 said: Интересно как, "напрямую" или через пакет? В смысле как? Просто читает из сейва https://github.com/OGSR/OGSR-Engine/blob/f170c7ba6632c02c8b5d763cd182ba9a106caddb/ogsr_engine/xrGame/InventoryOwner.cpp#L178 load_data (m_game_name, input_packet); 25 minutes ago, Graff46 said: У нас в методе биндера ГГ При чем тут биндер. Под клиентским объектом я подразумевал движковый клиентский класс. 27 minutes ago, Graff46 said: будто бы в метод сейва вообще передается не тот пакет, который мы получим от ГГ методом STATE_Write Именно так. В save() передается клиентская область сохранения, а не серверный нетпакет. Точно так же и в load() передается не нетпакет, а клиентская область сохранения. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Graff46 598 Опубликовано 10 Января 2019 Поделиться Опубликовано 10 Января 2019 (изменено) 7 минут назад, dsh сказал: В save() передается клиентская область сохранения, А имя ГГ в этой области? В случае если только что загрузились, и в 1 раз подгружаем имя ГГ из сейва Изменено 10 Января 2019 пользователем Graff46 Ссылка на комментарий
dsh 3 824 Опубликовано 10 Января 2019 Поделиться Опубликовано 10 Января 2019 18 minutes ago, Graff46 said: А имя ГГ в этой области? Не уверен, но сильно в этом сомневаюсь. Скорее всего - это отдельная область, которая не имеет ничего общего с той, куда записывает движок. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Graff46 598 Опубликовано 10 Января 2019 Поделиться Опубликовано 10 Января 2019 @dsh, проверил, нету Ссылка на комментарий
naxac 2 447 Опубликовано 13 Января 2019 Поделиться Опубликовано 13 Января 2019 @Graff46, плохо проверял наверное) https://github.com/naxac/CP2_AddOn/blob/master/gamedata/scripts/naxac_test.script Две функции в конце файла. Последняя вызывается в конце save биндера актера. Работает) Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
Капрал Хикс 538 Опубликовано 13 Января 2019 Поделиться Опубликовано 13 Января 2019 Кто-нибудь совмещал мод на умное выпадение частей монстров (отстреливаешь кабану ногу, выпадает копыта вместо 4) с модом "мясник" (отрезание частей монстров только при наличии ножа в инвентаре)? Хотелось бы где рабочий вариант подсмотреть, сам уже пытался смотать всё синей изолентой и писал тут, но увы... Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 13 Января 2019 Поделиться Опубликовано 13 Января 2019 Возврат взятой запчасти обратно в тушку - не? Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Капрал Хикс 538 Опубликовано 13 Января 2019 Поделиться Опубликовано 13 Января 2019 1 час назад, Dennis_Chikin сказал: Возврат взятой запчасти обратно Прости, не понял, о чём ты. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 13 Января 2019 Поделиться Опубликовано 13 Января 2019 По коллбеку от использования тушки начинаем проверять взятие запчасти из тушки, и если взялась, когда нет ножа - возвращаем взятое обратно. Собственно, не понимаю, что тут такого сложного "совмещать". Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Капрал Хикс 538 Опубликовано 13 Января 2019 Поделиться Опубликовано 13 Января 2019 Хм, я вот о чём. В ОП-2.1 строка функция спавна конечности монстра по факту юзания его с тушки с ножом local monster_part=ini_reader.iniReader():readString(monster:section(),"Spawn_Inventory_Item_Section","") - учитывает кол-во его запчастей на момент его смерти? Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 13 Января 2019 Поделиться Опубликовано 13 Января 2019 Данная строка просто читает название запчасти из конфига. Вообще, конечно, изучение кода ОПы - занятие, опасное для психического здоровья. 1 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Капрал Хикс 538 Опубликовано 13 Января 2019 Поделиться Опубликовано 13 Января 2019 (изменено) Ну, ОП для примера. Отрезание частей монстров ножом есть в ButcherMod_ShoC, но... Скрытый текст -- Срезание трофеев с монстров / Идея: мод "Мясник" (CoP) от Singapur22 function generic_object_binder:use_callback(obj, who) if self.use_flag == nil and self.object:section()~="m_trader" then self.object:set_nonscript_usable(false) self.use_flag = true end if self.object:alive() or self.used then return end local knife = who:item_in_slot(0) if who:id() ~= db.actor:id() or (knife~=nil and who:active_slot() == 0) then self.used = true else if knife then news_manager.send_tip(db.actor,"Чтобы cрезать трофей, нужно достать нож.") end return end self.item = read_if_exist("s",nil,self.object:section(),"Spawn_Inventory_Item_Section",nil) if self.item then self.item_count = read_if_exist("f",nil,self.object:section(),"Spawn_Inventory_Item_Amount",1) else return end for i=1, self.item_count do alife():create(self.item, who:position(), who:level_vertex_id(), who:game_vertex_id(), who:id()) end self.object:set_tip_text("") local h = hit() h.draftsman = self.object h.type = hit.fire_wound h.direction = vector():set(0,1,0) h:bone(read_if_exist("s",nil,self.object:section(),"bone_impuls_abscission","bip01_spine")) h.power = 1 h.impulse = (read_if_exist("f",nil,self.object:section(),"impuls_abscission",150)) self.object:hit(h) local sound_use = sound_object("material\\dead-body\\collide\\hithard0"..tostring(math.random(1, 6)).."hl") sound_use:play_at_pos(self.object, self.object:position(), sound_object.s3d) end Спавнится одна запчасть при юзании тушки монстра, а мне нужно количество запчастей подтягивать из другого скрипта, где оно задаётся в зависимости от стрельбы по конечностям. Вкратце: Скрытый текст function main_check(obj, amount, local_direction, who, bone_index) local sc = obj:section() if tD[sc] then local section = tD[sc] for k,v in pairs (m_Tbl[section].bones) do if bone_index == v then if (m_Tbl[section].data == "boar_leg_count" or m_Tbl[section].data == "snork_leg_count" or m_Tbl[section].data == "burer_handy_count" or m_Tbl[section].data == "zombie_handy_count" or m_Tbl[section].data == "handy_kontroler_count" or m_Tbl[section].data == "himera_kogot_count") and m_Tbl[section].param > 0 then m_Tbl[section].param = m_Tbl[section].param - 1 else m_Tbl[section].param = 0 end break end end end end function spawn_parts(obj) local sc = obj:section() if tD[sc] then local section = tD[sc] if m_Tbl[section].param > 0 then if m_Tbl[section].param > 1 then for i=1, m_Tbl[section].param do amk.spawn_item_in_inv(m_Tbl[section].item,obj) end else amk.spawn_item_in_inv(m_Tbl[section].item,obj) end end m_Tbl[section].param = m_Tbl[section].default_param end end И вот как это сделать правильно, я не знаю. Изменено 13 Января 2019 пользователем Капрал Хикс Добавлено HellRatz, 16 Января 2019 Есть же мод "умное выпадение частей мутантов". Там все уже сделано, только адаптировать надо под себя. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 13 Января 2019 Поделиться Опубликовано 13 Января 2019 Spawn_Inventory_Item_Amount",1 Собственно, есть же все необходимое. То есть, надо просто количество брать не из конфига, а из где-то сохраненного при убиении. Хоть бы и в pstor монстра. Либо, как уже предлагал, и, кстати, как в этой свежей опе и сделано - спавн запчастей при смерти монстра, но их возвращение обратно в тушу при взятии без ножа. 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Капрал Хикс 538 Опубликовано 13 Января 2019 Поделиться Опубликовано 13 Января 2019 3 часа назад, Dennis_Chikin сказал: То есть, надо просто количество брать не из конфига, а из где-то сохраненного при убиении. Именно про это я и спрашивал - КАК. 3 часа назад, Dennis_Chikin сказал: спавн запчастей при смерти монстра, но их возвращение обратно в тушу при взятии без ножа. Извини, я по-прежнему не догоняю. Я ни в коей мере не прошу сделать за меня готовый скрипт, но - извини, я не понимаю тебя. 3 часа назад, Dennis_Chikin сказал: Хоть бы и в pstor монстра. Не использую, не умею. Ладно, дабы не устраивать чат, посты под снос. Ссылка на комментарий
Капрал Хикс 538 Опубликовано 16 Января 2019 Поделиться Опубликовано 16 Января 2019 HellRatz, дружище. Умное выпадение частей мутантов я под себя уже подогнал, но там нет фишки в виде срезания этих самых частей с помощью ножа, что я поверх умного выпадения и пытаюсь прикрутить. Я ж вроде понятно описал, в чём мне знаний не хватает :). Ссылка на комментарий
Comador 203 Опубликовано 16 Января 2019 Поделиться Опубликовано 16 Января 2019 @Капрал Хикс, в свое время был аддон для НС от Monnoroch, так вот в этом аддоне было срезание частей монстров ножом. 1 Неважно – сколько у тебя друзей. Важно - сколько из них помогут тебе в трудную минуту и сколько вспомнят о тебе когда им хорошо. "Худ" и "Умное выпадание частей монстров" для Народной солянки Ссылка на комментарий
Капрал Хикс 538 Опубликовано 16 Января 2019 Поделиться Опубликовано 16 Января 2019 3 часа назад, Comador сказал: аддон для НС от Monnoroch Спасибо. Нашёл, глянул реализацию - насколько я понял, там есть умное выпадение, но фишка в том, что запчасти спавнятся в тушку мутанта в момент его смерти только при наличии в инвентаре ГГ ножа. Обыск же тушки производится обычным способом - это не то, что мне нужно. Ссылка на комментарий
naxac 2 447 Опубликовано 17 Января 2019 Поделиться Опубликовано 17 Января 2019 @Капрал Хикс, а что хранится в таблице tD в "умном выпадении запчастей"? По идее, нужно сохранять где-то по id монстра количество оставшихся рогов и копыт (у тебя, я так понял, это m_Tbl[section].param), а потом при "отрезании" тут: if self.item then self.item_count = ... брать значение не из конфига, а по self.object:id() из этого "где-то", вот и всё. Аддон для ОП-2.09.2: Яндекс/Google/GitHub Ссылка на комментарий
F.Constantine 0 Опубликовано 17 Января 2019 Поделиться Опубликовано 17 Января 2019 Всем доброго времени суток. Сделал первый в жизни скриптик к "Сталкеру ТЧ" - естественно, получил вылет . Подскажите, что не так сделал, пожалуйста. Скрытый текст Задача была повысить сопротивляемость урону всех НПС из сталкеров-одиночек (ну, просто надоело их трупы находить повсеместно). Сделать через конфиги не смог - разработчики там запутали все в какую-то безумную паутину перекрестных ссылок и #include-сов. Либо вообще не работают изменения, либо работают на всех НПС-людей, всех фракций сразу. Сделал маленькую функцию: function superresistance() if npc:character_community(stalker) then npc.health_hit_part = 0.1 end Параметр health_hit_part взят из конфигов сталкеров, это "процент хита, уходящий на отнимание здоровья". Прописал в файлик test.script В bind_stalker.script вставил ссылочку test.superresistance(), ну вот так: ... -- апдейт схемы детектора self.actor_detector:update() -- сверхсопротивляемость НПС test.superresistance() -- апдейт звуковой схемы актера xr_sound.update_actor() ... Что не так сделал? Заранее - спасибо. Добавлено Опричник, 17 Января 2019 Длинные тексты пожалуйста под спойлер. Выделить текст и нажать на панели инструментов кнопку с глазом. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти