Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском. Возможно, ответ на Ваш вопрос уже есть. Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
UnLoaded 313 Опубликовано 30 Марта 2015 Поделиться Опубликовано 30 Марта 2015 @dsh Насчет цифровых параметров я и сам хотел-бы услышать от более знающих. Пробовал потестить, выяснил следующее: actor_stats.add_points("quests", "Вернуть флешку Сидоровичу", 1, 5) - в ПДА на вкладке "Данные" Выполненные кветы - 5 Всего - 5 и в большом окне Выполненные задания Вернуть флешку Сидоровичу х1 5 Если изменяю actor_stats.add_points("quests", "Вернуть флешку Сидоровичу", 5, 1) - то получается Выполненные кветы - 25 Всего - 25 и в большом окне Выполненные задания Вернуть флешку Сидоровичу х5 5 Пока для меня это бредятина... Может кто из знающих просветит? Ссылка на комментарий
dsh 3 824 Опубликовано 30 Марта 2015 Поделиться Опубликовано 30 Марта 2015 @UnLoaded, я так же поигрался со "stalkerkills", там то же знатная бредятина выходит. dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
qvvxvvq 111 Опубликовано 30 Марта 2015 Поделиться Опубликовано 30 Марта 2015 HellRatz, Хороший вопрос, это просто объект, такой же как и обычная дверь, стена и т.п. Это как при подходе к мертвому оленю на 1.28 минуте. Ссылка на комментарий
HellRatz 2 892 Опубликовано 30 Марта 2015 Поделиться Опубликовано 30 Марта 2015 @PlayMod, ну статика, ясно. Ну делай как сказал. Сначала создаешь звук через СДК, настраивая его слышимость (От 1 метра, хоть через всю локацию, но вообще надо будет подбирать слышимость до идеала, постоянно перебирая параметры дальности, пока не добьешься нужного результата). Статья по настройке звука в СДК. Затем создаешь звуковую зону на месте нужного объекта, туда вписываешь свой звук. Делаешь make game, полученный файл (level.snd_static, вроде) кладешь в папку с уровнем, ну и звук в ogg. 1 GTA 3 MAP X-Ray | NFS U:2 MAP X-Ray | RTCW MAP X-Ray | L2D | Раритетные моды на моем облаке — на память о былом. Ссылка на комментарий
Карлан 1 049 Опубликовано 30 Марта 2015 Поделиться Опубликовано 30 Марта 2015 @dsh, @UnLoaded, статистика учитывается криво. Логику отследить вполне возможно, она там есть, но вот работает да - неверно (хотя опять же что у разрабов на уме было нам не понять). Вполне себе можно поправить. Да и в оригинале все функции (ну кроме одной вроде) вполне себе используются - советую посмотреть. Ну а ваша функция вот она - вся как на ладони: void CActorStatisticMgr::AddPoints(const shared_str& key, const shared_str& detail_key, s32 cnt, s32 pts) { SStatSectionData& sect = GetSection (key); SStatDetailBData& d = sect.GetData (detail_key); d.int_count += cnt; d.int_points += cnt*pts; } Как видно создается субтаблица и туда вписываются ваши данные. Тут и кроется вселенский косяк, который нетрудно устраняется . Ссылка на комментарий
UnLoaded 313 Опубликовано 30 Марта 2015 Поделиться Опубликовано 30 Марта 2015 который нетрудно устраняется Правкой скриптов или правкой движка ? Судя по приведенному фрагменту кода - это С++. Ну и в общем - что эти два числовых параметра должны были означать по задумке ? Зачем умножать один на другой ? Судя по коду, d.int_count это инкрементный счетчик, как я понимаю для регулярных заданий, типа принес копыта пять раз - будет запись навроде "Принести копыта" - х5. А вот последний параметр ? Ссылка на комментарий
Карлан 1 049 Опубликовано 30 Марта 2015 Поделиться Опубликовано 30 Марта 2015 @UnLoaded, последнее число - поинты, которые и пишутся в ПДА. Впрочем количество тоже пишется, я не пойму что тебе нужно. Вот куски кода: s32 _totl = Actor()->StatisticMgr().GetSectionPoints(key_name); if(_totl==-1) { itm->m_text2->SetTextST (""); }else { sprintf_s (buff,"%d", _totl); itm->m_text2->SetTextST (buff); } if( 0==(*it).str_value.size() ) { sprintf_s (buff,"x%d", (*it).int_count); itm->m_text2->SetTextST (buff); sprintf_s (buff,"%d", (*it).int_points); itm->m_text3->SetTextST (buff); }else { itm->m_text2->SetTextST ((*it).str_value.c_str()); itm->m_text3->SetTextST (""); } Ссылка на комментарий
UnLoaded 313 Опубликовано 30 Марта 2015 Поделиться Опубликовано 30 Марта 2015 (изменено) А что это вообще такое - поинты ? Типа очки за выполнение заданий ? Тогда получается, что в строкеВыполненные квесты - 25, число - это общее кол-во очков за выполнение разных квестов ? Это типа для школоты, пиписками меряться ? Типа да. Типа для мультиплеера. Со счетчиком они намудрили... Вообще система, очевидно, как с убивствами должна быть: сложность * на пойнты за действие. dc Изменено 30 Марта 2015 пользователем Dennis_Chikin Ссылка на комментарий
Карлан 1 049 Опубликовано 30 Марта 2015 Поделиться Опубликовано 30 Марта 2015 @UnLoaded, ну а чего тебе от них еще то надо? Методы управления выведены, привязывай к чему хочешь, в оригинале если не ошибаюсь они ни к чему не привязаны. Помимо них в этом массиве еще есть ranking, вот он да, задействован, но тоже сомнительно . Можешь и сам посмотреть, там в целом все очевидно, если бы не привязка к ПДА, то можно было-бы этим вообще только из скриптов и управлять (поинты/кол-во без скриптов даже не создадутся по факту), в принципе можно все это в скрипты и вынести при желании. Ссылка на комментарий
UnLoaded 313 Опубликовано 30 Марта 2015 Поделиться Опубликовано 30 Марта 2015 Вопрос по заданиям. имеется задание: <game_task id="tutorial_find_artefact"> <title>esc_tutorial_find_artefact</title> <objective> <article>article_find_artefact</article> <icon>ui_iconsTotal_tutorial_find_artefact</icon> <infoportion_complete>tutorial_artefact_done</infoportion_complete> </objective> ........ ....... ..... ... и еще задание: <game_task id="agr_help_krot_stalkers"> <title>agr_help_stalkers</title> <objective> <article>article_agr_krot_sos</article> <icon>ui_iconsTotal_defend_lager</icon> <infoportion_complete>agr_help_stalkers_assault_dead</infoportion_complete> </objective> ........ ....... ..... ... Иконки для отображения в описаниях заданий прописаны однообразно. Но при выдаче этих заданий стандартным образом(через и-п например) для первого задания в сообщении выводится назначенная в нем иконка с артефактом, а для второго задания в сообщении выводится иконка компаса. В чем проблема ? P.S. Смотрел в news_manager.script ф-цию send_task, но вот тут --' Берем координаты из текстуры таска local task_texture, task_rect = get_texture_info("ui_iconsTotal_"..task:get_id(), "ui_iconsTotal_locations") вообще ничего не понял... Ссылка на комментарий
Карлан 1 049 Опубликовано 30 Марта 2015 Поделиться Опубликовано 30 Марта 2015 Но при выдаче этих заданий стандартным образом(через и-п например) для первого задания в сообщении выводится назначенная в нем иконка с артефактом, а для второго задания в сообщении выводится иконка компаса. Я тут проблемы не вижу. Ты так и указал, в первом задании ищем артефакт - иконка артефакта, во втором убиваем людей - иконка компаса, все верно . Проблемы, собственно, нет. Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 30 Марта 2015 Поделиться Опубликовано 30 Марта 2015 (изменено) Очевидно, в ошибке в news_manager.script. task:get_id() в данном случае получается вполне рэндомным. 2 Карлан: именно. В очередной раз предполагается, что конфиги прибиты гвоздями. Изменено 30 Марта 2015 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Карлан 1 049 Опубликовано 30 Марта 2015 Поделиться Опубликовано 30 Марта 2015 @Dennis_Chikin, он никак не может быть рандомным, эта функция вполне явно получает айди таска из game_tasks.xml, в функции это просто подставляется в айди текстуры, и она успешно считывается из файла-описателя текстуры с иконками, рандома впринципе быть не может. Иконки типовые для каждого типа задания, вот вручную рандомизировать вполне можно. Ссылка на комментарий
UnLoaded 313 Опубликовано 30 Марта 2015 Поделиться Опубликовано 30 Марта 2015 Все, разобрался в чем проблема: первое задание из моих примеров имеет id "tutorial_find_artefact", следовательно "ui_iconsTotal_"..task:get_id() дает ui_iconsTotal_+ tutorial_find_artefact = ui_iconsTotal_tutorial_find_artefact - прописана в ui_iconstotal.xml. А второе задание даст ui_iconsTotal_+ agr_help_krot_stalkers = ui_iconsTotal_agr_help_krot_stalkers - такого в ui_iconstotal.xml нет. я наверное не прав, но на мой взгляд, более дурного способа получить иконку для сообщения не придумать... Ссылка на комментарий
dsh 3 824 Опубликовано 30 Марта 2015 Поделиться Опубликовано 30 Марта 2015 (изменено) @Карлан, я тестирую add_points() на движке из OGSE 0.6.9.3. Возможно, там что-то изменили на эту тему, но работает оно явно не так, как в приведенном коде. Вот такой вызов: actor_stats.add_points( "stalkerkills", "bandit_expirenced", 1, 1 ) не всегда приводит к увеличению счетчиков. Так, пора определиться с терминами. В ПДА, раздел статистика разделен на две части. В левой - общая статистика. В правой - список сталкеров с рангами и соотв. им счетчики. Притом, на каждого приходится два счетчика. Превый отображается, как xN, а второй - просто число. Так вот, при выполнении вышеуказанной функции, напомню, что я это делаю на движке из OGSE 0.6.9.3, число xN всегда увеличивается на 1, сколько бы раз я не выполнил это. А вот со вторым числом все хуже. Покажу лучше по другому. В начале имеем Бандит, опытный x0 0 Вызываю функцию, как указано. В ПДА вижу Бандит, опытный x1 1 Вызываю еще раз. В ПДА вижу Бандит, опытный x2 1 В дальнейшем, последнее число увеличиваться не будет. А изменится оно только в том случае, если я выполню add_points() с последним аргументом отличным от того, что показывается в ПДА, в последней колонке. И величина в ПДА изменится на разницу, а не просто прибавится. Вот такие вот чудеса. Изменено 30 Марта 2015 пользователем dsh dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
Карлан 1 049 Опубликовано 30 Марта 2015 Поделиться Опубликовано 30 Марта 2015 (изменено) @dsh, я не знаю что там в огсе, я говорю об оригинальной игре. И как это все работает я описал выше, я сам на практике конечно ассемблерные заплатки ставил еще на 4 патч, но давайте попробую рассказать. Есть инкермент и есть очки связанные с инкрементом через умножение. Допустим берем абстрактного сталкера за убийство которого инкремент увеличивается на единицу, и за этого сталкера дают 2 очка. В итоге мы имеем арифметическую прогрессию очков с разностью два. Т.е. убили одного, нам пишет в ПДА х1 2, убили двух - х2 4, убили трех - х3 6, и никак иначе. В общем количестве очков этого пункта статистики высвечивается число инкремент*очки, иными словами функция получает субтаблицу сформированную нами, и умножает два числа из нее. А все эти сталкеркилс, монстеркилс и т.д. - метки. Другой вопрос, что в этом алгоритме есть мелкие косячки которые и поганят всю общую картину, они видны прямо сразу, я даже не знаю что вам по этому вопросу еще рассказать, все коды показал, да что там - сами смотрите если интересует . @UnLoaded, выше же я это описал. Вполне удобный способ, если привыкнуть . Изменено 30 Марта 2015 пользователем Карлан Ссылка на комментарий
Zander_driver 10 334 Опубликовано 31 Марта 2015 Поделиться Опубликовано 31 Марта 2015 Вопрос по файлу game_maps_single.ltx. У каждой локации там есть параметр bound_rect = -512.000, -512.030, 0.000, 512.001 ;512.000x1024.031 Я так понимаю, это координаты в системе отсчета локации, соответствующие противоположным углам ее террейна. первые две - левый верхний угол, последние две - нижний правый, и даны они по осям x и z (в сталкере ведь, y - это вертикаль). Снимок террейна (собственно скрин карты) получаем при необходимости через demo_record on -> F11. И я так понимаю, это именно углы этого самого скрина, выдаваемого движком. И вот предположим, если я думаю что значения координат прописанные в bound_rect у какой то локации не верны, я могу их как то проверить, и выяснить точные правильные значения? Как их вообще можно узнать, если не из файла. Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Elz 343 Опубликовано 31 Марта 2015 Поделиться Опубликовано 31 Марта 2015 @Zander_driver, пробежать в крайний угол локации, получить координаты актора, пробежать в другой угол, сделать тоже самое, как вариант. Первый опыт в С++ (WinAPI) - небольшой текстовый редактор.Сборник книг по C++ | DX | WinAPI | Other на ЯДе Ссылка на комментарий
Malandrinus 615 Опубликовано 31 Марта 2015 Поделиться Опубликовано 31 Марта 2015 @Elz, прошу прощения, не могу удержаться от вопроса. А что делать, если локация круглая? 2 Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
abramcumner 1 159 Опубликовано 31 Марта 2015 Поделиться Опубликовано 31 Марта 2015 Снимок террейна (собственно скрин карты) получаем при необходимости через demo_record on -> F11. И я так понимаю, это именно углы этого самого скрина, выдаваемого движком.Да, и только с этим скрином карты эти координаты имеют смысл. И вот предположим, если я думаю что значения координат прописанные в bound_rect у какой то локации не верны, я могу их как то проверить, и выяснить точные правильные значения? Как их вообще можно узнать, если не из файла.На ТЧ нормально никак не проверить. Только сделать новый скрин карты. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти