JSilver
Пользователь
Posts: 16
|
|
Re: Партийцы теряют уровни (возвращаются к первому уровню)
« Reply #15 on: 26 December 2009, 12:21:19 » |
|
забавно. Если спрятать прошник Кассиди в патч000 - он уровни не теряет. Ничего не понимаю. Только в конфиге sfall не забудь включить поддержку множества ресурсных архивов ты имеешь в виду это: ;To use a patch file other than patch000.dat, uncomment the next line ;and add your new file name ;If you want to use multiple patch files, you can include a %d in the file name ;The original file is patch%03d.dat ;PatchFile= PatchFile=patch%01d.dat ? Или как? или это 03 после "%" обозначает СКОЛЬКО патч файлов искать? Я собираюсь запихивать в него по очереди патчи 001, 002, 003, 004 и сколько понадобится не запихивая патч000.дат. Или, наоборот, ЗАпихивая патч000 - например киллаповский, а 001 и выше - собственные.
|
|
|
|
binyan
Пользователь
Posts: 41
|
|
Re: Партийцы теряют уровни (возвращаются к первому уровню)
« Reply #16 on: 26 December 2009, 13:57:13 » |
|
JSilver Будь добр, проверь наверняка, влияет ли тот факт в какой дат(мастер или патч000) упаковывать базовый прошник на сброс данных или нет. Поидее можно запаковывать и в патч000. All Добавил инфу в доку. Пока что написал что нужно запаковывать в мастер.дат.
|
|
|
|
Wasteland Ghost
Администратор
Posts: 869
Маленькое Злое Привидение
|
|
Re: Партийцы теряют уровни (возвращаются к первому уровню)
« Reply #17 on: 26 December 2009, 14:48:15 » |
|
JSilverНету тут никакого party.h. Все эти аши вообще, строго говоря, к игре отношения не имеют. А показано на том рисунке, что двиг управляет партией и организует взаимодействие между служебными и текстовыми описаниями. По party.txt определяются прошники, а по прошникам — скрипт. Последнее не обязательно — скрипт можно и потом привязать. Что ты всё время ссылаешься на скрипты? На них свет клином не сошёлся. Партиец без собственного скрипта тоже может быть партийцем (можно и так извращнуться, да ). Важно то, что движок управляет партийцами и различает их по базовым ПИДам. Возьмём, скажем, такой процесс, как левелап. Он ведь не скриптами контролируется, а движком. По ПИДу. Подозреваю, что при наличии в этот момент на карте криттеров-близнецов, двиг либо сойдёт с ума, либо левелапнет обоих. Как пример.
|
|
|
|
Ray
Глобальный модератор
Posts: 220
|
|
Re: Партийцы теряют уровни (возвращаются к первому уровню)
« Reply #18 on: 26 December 2009, 18:32:12 » |
|
Нет, строку
;PatchFile=
вообще не трогай. Она отвечает за название файла. Найди
;NumberPatchLoop=100
и раскоментарь. Тоесть замени на
NumberPatchLoop=100
|
|
|
|
JSilver
Пользователь
Posts: 16
|
|
Re: Партийцы теряют уровни (возвращаются к первому уровню)
« Reply #19 on: 26 December 2009, 23:20:21 » |
|
WG конечно, я имел в виду party.txt, который там и нарисован. просто нечаянно написал аш. Но имел в виду однозначно тэхатэ. Это ж там он "МакРей Третий". А то что аши - это предкомпилируемые инклюды - это я все таки знаю, не маленький.
Теперь по сути. Вообще-то этот рисунок можно трактовать следующим образом. Движок смотрит в парти.тхт и видит там массив из 25 родных + эн самодельных партийцев. И как бы где-то в памяти резервирует на них ссылки. Нулями. А когда в чьем-нибудь скрипте происходит команда "добавиться в партию", то ноль заменяется на пойнтер на того уникального криттера, чей скрипт сработал. Сколько бы криттеров такого пида на карте не тусовалось. Потому что этот Party_Ptr и self_obj - это всегда одно и то же число. Но вот команда добавления почему-то двухходовая: сначала из селфа - пид, потом из пида - опять пойнтер. Который снова равен селфу.
Но вот только почему тогда парти.тхт стоит между движком и прошником, если ты говоришь, что движок ищет по прошникам?
Стоп. Кажется понял. Ты нарисовала в таком порядке табличку чтобы этим сказать, что парти.тхт - это специальный список, в который смотрит движок, и все, что должно происходить с партийцами он делает, сначала посмотрев в него и поискав, есть ли партиец такого пида. А если бы он искал не по пидам а по селфам, ища "а есть ли в этой каше на карте кто-нибудь, кто не просто криттер, а заодно еще и партиец", то игрушка просто умирала бы на любых процессорах? Соответственно, вместо цикла по всем криттерам карты он делает цикл по 25 потенциальным партийцам, и внутрь процедуры обработки входит только если находит там (на месте этого партийца) не ноль? (а минимум 20 из них - заведомо нули).
"Партиец без скрипта" - это ты багажник имеешь в виду? Если да - что ж в этом "извращнутого"? Очень пользительный партиец. Мирону в задницу не стреляет, на харизму=1 не обижается, очередь из 7.62 - как с гуся вода...
Кстати, про скрипты, я где-то видел тему, что скриптовые предметы (для желателей портящегося оружия) - это плохо не только потому что предметы перестают стековаться, а еще и потому, что если много таких предметов сначала притащить на карту (и там для них отведется место), а потом унести их и выбросить в пустыне (и место очистится) - то на эту карту больше не зайдешь, потому что корректно его движок чистить не умеет. Криттеров со скриптами это тоже касается или только предметов? А то я как-то перебил всех китайцев в Сан-Фране, которые кричали "Ло-Пан герой!" - так карта виснуть стала...
Я думаю из близнецов он левельнет того, кого в памяти первым найдет. С ума точно сойти не должен, он либо отреагирует на второго и его тоже левельнет, либо остановится на первом, кто попадется.
А на скрипты я ссылаюсь все время потому, что запомнилась одна твоя фраза, что "вообще весь моддинг - это попытка при помощи возможностей скриптов обойти ограничения движка". Нельзя напрямую изменить какую-нибудь характеристику, потому что она вычисляемая, ну так можно в скрипт запихать использование "наркотика", который ее изменит.
====================
Ray ну ты и мастер издеваться! как же я могу раскомментарить эту строчку, если ее там нет. Приписать - теперь могу, раз ты ее назвал, а раскомментарить можно только то, что уже есть. А ее нигде не нашел, и в двух патчах Киллапа, кстати, тоже. Ее все равно куда приписывать? или в той же секции где и ;PatchFile= например сразу после него?
И все таки определенно хочу: если я ИСпользую патч000 - ;PatchFile= должно быть закомментировано, а NumberPatchLoop=4 заставит его поискать еще патчи 001, 002 и 003?
а если я не использую патч000, а начинаю, например с патча 007 по 010, то должен ли я что-то изменить ради этого? Или если мне лень все время переименовывать 000, и я хочу, чтобы он именно был пропущен, хоть и есть в корневой директории?
|
|
|
|
Ray
Глобальный модератор
Posts: 220
|
|
Re: Партийцы теряют уровни (возвращаются к первому уровню)
« Reply #20 on: 27 December 2009, 15:10:40 » |
|
JSilver, у тебя старая версия sfall, которая ещё не поддерживает данную возможность... Скачай http://sourceforge.net/projects/sfall/>> NumberPatchLoop=4 заставит его поискать еще патчи 001, 002 и 003? Да. Только 000, 001, 002 и 003 Никакой файл пропущен не будет, поиск всегда начинается с patch000.dat NumberPatchLoop - это номер по какой искать файлы. Если будет 10, то переберутся все начиная с 0 по 10. PatchFile это имя патча. %03d это из с++ означает что в данном месте в имени будет число, состоящее из 3х знаков. Число подставляется движком для перебора. Так что не трогай это значение P.S. зачем тебе пропускать patch000.dat? если какие-либо данные будут находится в более старших патчах - они будут взяты оттуда... Тоесть если есть party.txt в patch000.dat и в patch001.dat то игра воспользуется данными из patch001.dat
|
|
« Last Edit: 27 December 2009, 15:13:49 by Ray »
|
|
|
|
|
Wasteland Ghost
Администратор
Posts: 869
Маленькое Злое Привидение
|
|
Re: Партийцы теряют уровни (возвращаются к первому уровню)
« Reply #21 on: 27 December 2009, 15:35:30 » |
|
Теперь по сути. Вообще-то этот рисунок можно трактовать следующим образом. Движок смотрит в парти.тхт и видит там массив из 25 родных + эн самодельных партийцев. И как бы где-то в памяти резервирует на них ссылки. Нулями. А когда в чьем-нибудь скрипте происходит команда "добавиться в партию", то ноль заменяется на пойнтер на того уникального криттера, чей скрипт сработал. Сколько бы криттеров такого пида на карте не тусовалось. Потому что этот Party_Ptr и self_obj - это всегда одно и то же число. Но вот команда добавления почему-то двухходовая: сначала из селфа - пид, потом из пида - опять пойнтер. Который снова равен селфу. Хе. Понимаешь, как только ты выйдешь из игры и войдёшь заново — все адреса объектов (указатели) поменяются. Потому что память выделяется динамически. Конечно, скорее всего в конечном итоге работа идёт по указателям. Но эти указатели каждый раз надо получать заново после очередного перезапуска игры. Как? Только по ПИДам, больше никак. Party_Ptr и self_obj конечно будут одинаковыми — это просто два разных способа получения одного и того же числа. Не ищи глубинного смысла там, где его нет. PS Автор доки — не я. Но я тебе точно могу сказать, что именно означает тот или иной рисунок.
|
|
|
|
JSilver
Пользователь
Posts: 16
|
|
Re: Партийцы теряют уровни (возвращаются к пе
« Reply #22 on: 27 December 2009, 16:08:41 » |
|
Ray ну так я ж не думал, что тот, что лежит на TeamX - старый, я, естественно, его скачал.
Все, про %03 - понял. Жаль что в его инишке не так понятно написано.
К старому. ... И ты предполагаешь, что если патч000 будет "закрыт" патчем001, то в сам 000 можно прятать прошники ничуть не хуже, чем в мастер.дат Я правильно понял?
Кстати, я не знаю, важно это или нет, но почему-то очень хочу знать механизм: игра ищет сначала в мастер.дате, находит, потом ищет в патч000, и если находит - обновляет, а потом в патч001 и т.д. или, наоборот, она сначала ищет в патч003, и если там находит - заканчивает поиск, а если не находит - ищет в 002, и так до тех пор, пока не найдет в мастер.дате.
Что будет, если в разных патчах файлы противоречат друг другу?
Например, в патче001 в итемлисте прописано до 490 предмета, но прошников меньше, чем зарезервировано, а в патче002 лежат прошники до 490, зато туда кто-то нечаянно запихал итемлист, в котором только 485 предметов?
============
WG мне показалось, что указатели меняются даже чаще. У меня как-то был случай, когда я выгнал партийца, сделал "два шага", взял его обратно - у него УЖЕ другой указатель был. Хотя возможно я что-то большее, чем просто "пару шагов" сделал. Но сами эти изменения очень хорошо замечал, потому что в качестве отладочной меры запихал в скрипт строчку, чтобы каждый раз к описанию партийца (когда курсор наводишь) еще его селф добавлялся.
А по ПИДам - действительно самый надежный способ. Это ж почти аналог ID из баз данных.
В общем, я кажется разобрался. Мудрить с "селфами" желание пропало, теперь осталось исследовать, насколько неглубоко позволено прятать чьи прошники.
Заранее вопросы: 1. есть ли какая-либо разница, запихивать в патчХХХ прошники поставив на них рид-онли или не поставив? 2. есть ли какая-то разница проверять эффективность спрятанности со сфаллом или без? (без него не получится больше одного патча но я не про это сейчас)
3. есть ли какая-нибудь разница, чем паковать патч, dat2 или dat-explorer'ом? Ибо отчеты dat-repairer'а меня приводят в большое недоумение: как можно говорить два раза подряд, что в патче инфалидная очередность файлов - ведь после первого прохода он должен был ее уже исправить? и как можно называть инвалидными ОБА патча, которые оба состоят из двух файлов - прошник криттера и криттер.лист с добавленным единственным номером, если эти две запаковки отличаются очередностью попадания туда этих двух единственных файлов??
4. у меня со сфаллом не хочет запускаться маппер, приходится переименовывать dll'ку. так и должно быть, или маппер тоже надо скачать теперь новый?
|
|
« Last Edit: 27 December 2009, 16:11:39 by JSilver »
|
|
|
|
|
Wasteland Ghost
Администратор
Posts: 869
Маленькое Злое Привидение
|
|
Re: Партийцы теряют уровни (возвращаются к первому уровню)
« Reply #23 on: 28 December 2009, 12:21:17 » |
|
3. dat2
|
|
|
|
|