Форум TeamX
   Home   Members  
Pages: 1 [2] |   Go Down
 
Author Topic: Партийцы теряют уровни (возвращаются к первому уровню)  (Read 2310 times)
JSilver
Пользователь
Posts: 16


Re: Партийцы теряют уровни (возвращаются к первому уровню)
« Reply #15 on: 26 December 2009, 12:21:19 »

забавно. Если спрятать прошник Кассиди в патч000 - он уровни не теряет. Ничего не понимаю.

Quote
Только в конфиге 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

336150559
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

336150559
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 »

Quote
Теперь по сути. Вообще-то этот рисунок можно трактовать следующим образом. Движок смотрит в парти.тхт и видит там массив из 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
Pages: 1 [2] |   Go Up