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


Партийцы теряют уровни (возвращаются к первому уровню)
« on: 23 December 2009, 16:06:51 »

Хэлп!

облом происходит в обоих случаях, что чистый фолл 1.02, что киллаповский пачт.

родные партийцы уровней НЕ теряют, самодельный - ТЕряет. на лоаде или на входе в локацию. насколько я помню, в обоих случаях запускается именно map_enter процедура.

это уже смотрел:
http://teamx.ru/cgi-bin/ikonboard/topic.cgi?forum=5&topic=548&start=0

"в скриптах", как я думаю, ничего нет:
1. содержимое map_enter_p_proc просто банально содрано у партийцев кого попроще:

procedure map_enter_p_proc begin
  party_member_map_enter;
end

ВСЕ! больше в мап-энтер ничего нету. А это - есть у всех абсолютно. Сверх того они имеют только по квестам. В частности у робота из Сьерры тоже больше ничего нету.
Wasteland Ghost
Администратор
Posts: 869

Маленькое Злое Привидение


Re: Партийцы теряют уровни (возвращаются к первому уровню)
« Reply #1 on: 23 December 2009, 17:07:01 »

map_enter здесь не при делах. Ищи ошибку в pro-файлах уровней твоего партийца. Где-нибудь с PID ошибся.

PS А смотреть надо было не там, а тут.
JSilver
Пользователь
Posts: 16


Re: Партийцы теряют уровни (возвращаются к пе
« Reply #2 on: 24 December 2009, 07:30:20 »

[Party Member 26]   ; pMAAGirl_PID
party_member_pid=16777700

(пид проверен, display_msg(obj_pid(self_obj)) выдает именно его.)

.... (всячина об AI)

level_minimum=1
level_up_every=1
было:
level_pids=16777702,16777703,16777704,16777705
(собственные, мной нарисованные)

сделал:
level_pids=16777589,16777590,16777591,16777592,16777593,16777594
(банально просто тупо взял от вика, у которого ничего не спадает.
все равно не работает! Повышается с 700го прошника на первый апгрейд вика, потом опять все сваливается.

Кстати, я не понял твой вывод: если я бы ошибся в пидах, т.е. номер прото файла не тот поставил, то у меня должен был бы быть испорчено не только понижение уровня, но и повышение, разве нет? а у меня повышение как раз все правильно происходит, ровно то, что и ожидается - то и повышается.

Виковские левель-апы даже пальцем не трогал, просто их номера указал вместо своих.
Ровно по приколу "если вы укажете в левель-апах пид анклавца, то и характеристики на этом уровне у вашего партийца будут от анклавца"

Еще выяснил: скрипт вообще не при чем, навесил его на вика вместо его родного - ведет себя строго по скрипту, а левеля не сбрасываются.

Еще выяснил: 700-й прошник тоже не при чем, стер все свои прошники, восстановил нетронутые файлы, создал новый единственный прошник, поставил ему только FID, чтоб криттер отрисовывался, и сохранил. Все равно сбрасывается!

Где ошибка ??

"тут" - тоже смотрел, никаких поправок делать не пришлось.
« Last Edit: 24 December 2009, 07:33:44 by JSilver »
Wasteland Ghost
Администратор
Posts: 869

Маленькое Злое Привидение


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

Ты в самих прошниках ПИДы смотри. В версии 1.02d такая же проблема была с Кэсссиди (правда, емнип, там сбрасывались настройки).

Вообще, у партийцев есть шаманские места. Скажем, AI-пакеты партийца должны обязательно идти в определённом порядке, а не просто так. Прошники по возрастанию и т.п. В общем, ищи. Скрипты тут точно не при чём — там ведь прошники не трогаются, даже для смены внешнего вида брони меняется всего лишь арт. Значит, дело в ресурсных файлах.
JSilver
Пользователь
Posts: 16


Re: Партийцы теряют уровни (возвращаются к пе
« Reply #4 on: 24 December 2009, 12:08:10 »

не помогло.

в самих прошниках стоят правильные пиды, нулевой дворд от начала файла, порядок байт - прямой а не "машинный", первый байт - единичка, "за криттерство", последние два байта равны номеру файла, т.е. 1E4, 1E5 и т.д., что как раз и дает игровой пид = 16777700, 16777701 и т.д. Все тютелька в тютельку!
в прошниках виков-суликов - все точно также, какой номер в названии файла, такой и в прошнике.

а больше в прошнике никто за пид не отвечает - только что пересмотрел доку "формат данных\про-файлы".

прошники у меня не просто по порядку стояли, а совсем по порядку: 700, 701, 702 и т.д.
кроме того, это ведь не должно иметь значения, просто на энном левельапе возьмется энный по порядку прошник.

"шаманское место" про порядок AI-пакетов знаю, что "кастом" - последний, и что указывать надо криттеру именно его.
Кстати, я думаю, что настройки Кассиди сбрасывались оттого, что у него не "кастом" стоял а какой-нибудь "агрессив". При повышении уровня перегружаются данные, и его боевые настройки снова переставлялись в прошный дефолт.

=============

еще один симптом, вдруг от этого яснее станет.
левеляпные прошники точно не виноваты. я поставил их Кэсу (этому добряку квесты не нужны для включения в партию),  и заставил его "расти" их данными - вырос со своих характеристик на мои, которые 701, 702 и далее, и никакой сейв-лоад не заставляет его заьыть их. Все чисто!

Значит либо виноват только стартовый прошник - а что с ним может быть  не так, если он с левеляпами под копирку делался?? - либо вообще не прошники.
« Last Edit: 24 December 2009, 12:41:49 by JSilver »
binyan
Пользователь
Posts: 41


Re: Партийцы теряют уровни (возвращаются к первому уровню)
« Reply #5 on: 24 December 2009, 20:57:50 »

Так.. Секунду.. Значит когда ты поставил свои прошники Кэсу, то у него ничего не сбрасывалось, а когда ты ставишь прошки своему партийцу, тогда уровни сбрасываются?
binyan
Пользователь
Posts: 41


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

Кстати, так, на всякий пожарный. Ты нового партийца в party.h вписывал? Скрипты нужные перекомпилировал?
JSilver
Пользователь
Posts: 16


Re: Партийцы теряют уровни (возвращаются к пе
« Reply #7 on: 25 December 2009, 07:33:25 »

нет, я ничего НЕ прописывал в party.h, я вместо этого создал собственный NPC.h, и содрал туда все нужные вещи из party.h, чтобы нигде ничего НЕ напортить.

а что мой криттер "не компанейский" и не участвует во всяких "сколько партийцев ранено" - мне пофиг, пусть сначала у меня заработает то, что я писал, а потом я буду думать о том, что вообще традиционно для партии. Естественно, все остальные скрипты, party.h включающие, я и не думал перекомпилять. Нафиг надо портить старых партийцев, если у меня  новый не работает.

Кроме того, диагностика уже показала, что скрипты вообще не причем. Я присобачил свой скрипт вику, и он ведет себя в точности как мой криттер. С единственным отличием, что до первого переодевания брони шляется в образе толстяка.
Следовательно party.h тоже не при чем абсолютно.

Еще раз все симптомы:
1.02, киллап или без.
1. я сделал прошник нового криттера (PID 484 он же 16777700)
2. я сделал левеляпные прошники нового криттера (485 и дальше)
3. вик и прочие могут расти на этих левеляпных прошниках ничуть не хуже чем на своих собственных.
4. вне зависимости какие прошники подгружает себе вик - они сохраняются навсегда
5. партиец может расти при помощи своих прошников,
6. точно так же он может расти на левеляпных прошниках старых партийцев,
7. но после первого же сейв-лоада или входа на новую карту у него все новоприобретенные данные - пропадают.
8. левель партийца при этом тем не менее запоминается - дорастя до верхнего, и потеряв все на лоаде, он не начинает расти заново через 1-й, 2-й и далее, а так и остаентся далее не растущим.
9. скрипты не причем совсем, вик со скриптом партийца только выглядит как вик.
10. во всех прошниках 484, 485 и далее нулевым двордом стоит именно номер прошника, какой и должен быть, и какой стоит во всех остальных прошниках виков-миронов,
11. ни в каком прошнике не привязан заранее никакой определенный скрипт (ставится только ручками при постановке криттера на карту), как и у всех остальных партийцев.
12. прошник 484 вместе с critters.lst и pro_crit.msg как в директории дата рид-онли, так и запакован в patch000.dat бывал - разницы никакой.
13. в party.txt прописано:

[Party Member 26]   ; (следующий за багажником)
party_member_pid=16777700 (он самый, точно проверенный и изнутри и снаружи и в деле)
....
level_minimum=1
level_up_every=1 (чтоб побыстрее проверять)
level_pids=16777701,16777702,16777703,16777704  (не важно, любые ставятся, но любые же и спадают)
« Last Edit: 25 December 2009, 07:35:51 by JSilver »
Freeman
Пользователь
Posts: 50


Re: Партийцы теряют уровни (возвращаются к первому уровню)
« Reply #8 on: 25 December 2009, 09:45:48 »

Quote
какой номер в названии файла, такой и в прошнике.
В прошнике должен быть не номер файла, а его индекс в lst файле. Посмотреть можно на примере начальных прошек предметов. В 00000003.pro например указан PID 1.
Но это к нашему делу вроде не относится, поскольку криттеры вроде нормально пронумерованы.
Quote
как в директории дата рид-онли, так и запакован в patch000.dat бывал - разницы никакой.
Попробуй запихать в master.dat. В моде Alternative Life все прошки перепаковываются в master.dat. Подробностей не помню, но вроде это правило какой-то баг.

А вообще можешь попробовать пошариться на НМА.
Например пара тем:
NPC levelup problems
Cassidy bug, AI packets and adding new party NPC's
и пара цитат:
Quote
It is true that having base protos for NPCs in your protos directory will prevent them from leveling up.
Quote
Yes, if it is in the data folder (or patch000.dat) it does take precedence. That is the problem... at least with the files in the data folder. It steps on the other proto files when Cassidy levels up (the reason why you get instances of 120/85 hit points, or something like that).
« Last Edit: 25 December 2009, 09:53:42 by Freeman »
JSilver
Пользователь
Posts: 16


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

сбитая нумерация прошников есть только у предметов и только только у первых 20, потом все по порядку. А у криттеров - все как и должно быть, а я копировал закономерность у виков-миронов, у них КАЖДЫЙ пид внутри равен пиду снаружи, так что это не поможет.

про кассиди на этом форуме говорят именно то, что я предположил в прошлом сообщении - не тот аи-пакет выставлен, вот он и сбрасывается постоянно.

а вот вторая ветка тобой помянутая - ровно про это!
причем это не просто "пара цитат", это сказал Киллап!

Перевожу для тех, кто впорется в подобную проблему:
===========================================
It is true that having base protos for NPCs in your protos
directory will prevent them from leveling up.  (C) Killap.
===========================================
Если в вашей директории с прототипами НПСей есть их
базовый прошник, то он будет мешать им набирать уровни.
===========================================

Подтверждено экспериментом: я маппером заставил появиться прошник кассиди, поставил на него атрибут рид-онли, в игре кассиди левельнул, и как только сделал сейв-лоад, у кассиди оказалось HP 104 of 80!

Киллап сказал именно об этом!

Пойду прятать базовый прошник.
Надеюсь, достаточно будет запрятать его в patch000.dat а не в master.dat
JSilver
Пользователь
Posts: 16


Сухой остаток
« Reply #10 on: 25 December 2009, 13:24:06 »

Чтобы партийцы не теряли уровни, которые они получают при повышении, игра не должна находить базового прошника вашего партийца. Если найдет - сбросит все характеристики в то состояние, в котором они указаны в этом самом прошнике.

Как лечить? Надо спрятать прошник.
В директорию прото - нельзя, именно оттуда его и надо убирать.
(это сказал еще Киллап)

В файл patch000.dat - нельзя, он там "не прячется". Это сегодня выяснил я. Почему - не знаю, просто таковы факты.

В файл master.dat - можно. Тоже сегодня проверил. С партийцем все нормально, уровни повышает, никуда ничего не теряет, чьи прошники ему подсунули в качестве повышающих - даже не интересуется, хватает оттуда данные и в ус не дует.

Два варианта решения проблемы, которые в связи с этим пришли в голову мне:
1 вариант: создав базовый прошник собственного партийца - затолкать его в master.dat.

2 вариант, если master.dat трогать не хочется: в качестве базового прошника использовать уже существующий в игре прошник, который так и останется навсегда запакован в мастер.дате, ну если только кто-нибудь не вытащит его оттуда руками и не проставит на нем атрибут рид-онли, тогда конечно, все насмарку.
А вот повышающие прошники уже рисовать самому и хранить где угодно и как угодно, хоть в открытом виде в директории, хоть запаковаными в патч000.дат - кому как приятнее.
Первый уровень партиец как-нибудь "перекантуется задохликом", а уже начиная со второго будет полноценно соответстввовать задуманному персонажу.

Просьба к спецам: разругайте второй вариант.

====================================
Если спецы  решат, что вариант 2 решения проблемы вполне законен, то тогда доп.вопрос:
а какие возникнут глюки при вот таком использовании одного и того же криттерского прошника (естественно, абсолютно допустимо, что все трое будут одновременно в партии с чузом):

[Party Member 3]   ; pMMacRae_PID
party_member_pid=16777305 (это сам Кэс, его никто никуда убирать не собирается)
....
level_minimum=10
level_up_every=4
level_pids=16777554,16777555,16777556,16777557

[Party Member 26]   ; pMSoldier_PID
party_member_pid=16777305 (это другой персонаж на базе Кэса, левеляться ему не положено)
....
level_minimum=0
level_up_every=0
level_pids=-1

[Party Member 27]   ; pMOfficer_PID
party_member_pid=16777305 (а это еще более другой персонаж на базе того же самого Кэса, и левеляться ему не перелевеляться)
....
level_minimum=10
level_up_every=4
level_pids=16777700,16777701,16777702,16777703 и т.д.

потому что я нутром чуюю, что так нельзя, а почему - не понимаю.
Wasteland Ghost
Администратор
Posts: 869

Маленькое Злое Привидение


Re: Партийцы теряют уровни (возвращаются к первому уровню)
« Reply #11 on: 25 December 2009, 18:38:55 »

Ругаю второй вариант. Улыбка

Если криттер с таким ПИДом будет на той же карте, что и партиец, теоретически могут возникнуть конфликты скриптового характера.

Третий вариант недопустим, потому что партийцы различаются именно по базовому ПИДу и при таком раскладе ты не сможешь определить, кто из них присоединён и сколько вообще у тебя партийцев. Ну и всё такое прочее.

В общем как резюме: базовый ПИД партийца должен быть уникальным!

binyan Хорошо бы добавить инфу о базовом прошнике в хаутушку по партийцам.
« Last Edit: 25 December 2009, 18:41:39 by Wasteland Ghost »
binyan
Пользователь
Posts: 41


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

Ок, я добавлю. Хотя на моей памяти мы с Майнахом обсуждали это, и я добавлял в доку тот факт что нужно запаковывать прошки в мастер.дат. Сейчас проверю, если нет, добавлю.

Update:
Говорю ж обсуждали.
http://teamx.ru/cgi-bin/ikonboard/topic.cgi?forum=5&topic=405&start=0

Ушел смотреть доку.
« Last Edit: 25 December 2009, 18:51:16 by binyan »
JSilver
Пользователь
Posts: 16


Re: Партийцы теряют уровни (возвращаются к пе
« Reply #13 on: 25 December 2009, 20:54:34 »

binyan 
В той доке, что поминалась в этой теме, этого не видел, если где и есть - то в другой.
В любом случае, обязательно допиши симптомы, что будет если их НЕ паковать в мастер.дат, что сбрасываются набранные уровни, что в patch000.dat паковать бесполезно и т.д.

в любом случае, какой-нибудь не особенно опытный человек типа меня, например,  ВСЕ РАВНО не стал бы паковать свои прошники в мастер.дат, не зная твердо, чем это чревато.
Я вот и сейчас уже знаю, что без этого никак, а все равно не хочу, буду искать обходной маневр. Трогать руками мастер.дат - это занятие для WG & Co. А мне проще спилить какого-нибудь криттера, например линетту, которая запредельно уникальна в своей синей пижаме, в 700й пид, поменять ее на карте на эту 700ку, ее в партию все равно никто не возьмет, даже если б и можно было, об уровнях и говорить нечего, а потом on_map_first_enter просто переделать ее бывший FID на тот, что нужен моему криттеру. И гудбай глюки, как мне сейчас представляется.

====================================

Wasteland Ghost
тогда почему в концепции объектов в Fallout 2 на рисунке, который здесь:
http://teamx.ru/node/115
стрелка идет от "движка" к "party.h", а уже оттуда к прошнику партийца, а не наоборот? а уже потом к его скрипту?
или я вообще неправильно понимаю всю схему?

Кто такой Кэс?
"Третий партиец" у которого по приколу есть еще и фамилия, которая называется "89"?
Или "заключенный 89", который когда эпизодически устраивается на работу партийцем, всегда получает членский билет №3?

И кто левеляется? "Третий партиец" или "заключенный 89"?

возражение по "более легкой форме болезни". если не настаивать на третьем вариате, а остановиться лишь на втором, то какие такие проблемы скриптового характера могут возникнуть? и какого-нибудь фермера - свой скрипт, у моего партийца - свой. Вон в Сан-Фране одни и те же китайцы делятся на фракцию ло-пана и дракона и ничего? Они конечно, не левеляются, но как бы это и не скриптово.

Насчет "партийцы различаются по базовому пиду" - есть возражения. Я делал двух партийцев на один скрипт и одну гвару,

замаялся с:

#define PID_1         (16777700)
#define PID_2         (16777701)
#define P1_Ptr         party_member_obj(PID_1)
#define P2_Ptr         party_member_obj(PID_2)
#define P_in_party         ((P1_Ptr != 0) or (P2_Ptr != 0))

после чего плюнул на все и написал:

#define PID_any         obj_pid(self_obj)
#define P_Ptr         party_member_obj(PID_any)
#define P_in_party         (P_Ptr != 0)

до сих пор этим пользуюсь и еще не поймал ни одного глюка. ах да, именно поэтому
скрипт повесился на вика, а я даже и не заметил, что не перекомпилил его.
брал партийца, оставлял, сейвился-лоадился, ходил по другим картам... ни разу никто никого не потерял, ничего не забыл и прочее.

Хотя... Что-то я сейчас смотрю на все это, и оно мне все меньше нравится.
переведя в пид мы забудем селф и получим два одинаковых пида.... А потом настанут глюки... А заключатся эти глюки будут в том, что если на карте есть еще один криттер с таким же пидом, который будет скриптом найден раньше - то партиец всегда не в партии.

и даже замена
#define P_in_party         (P_Ptr == self_obj)
не спасет. потому что извратно полученный Ptr и ссылаться будет на какого-нибудь левого извратного криттера.

Елки, а ведь такой план хороший был!

WG, я все правильно понял, план был полное дерьмо?
« Last Edit: 25 December 2009, 20:56:43 by JSilver »
Ray
Глобальный модератор
Posts: 220

336150559
Re: Партийцы теряют уровни (возвращаются к первому уровню)
« Reply #14 on: 26 December 2009, 00:40:11 »

Можно я немного влезу в тему? Улыбка Функция, подгружающая данные из архивов в игру, одна и та же для всех - для master.dat, critter.dat, patch000.dat. Именно так я реализовал множественную загрузку из множества patchxxx.dat Очень странно что в patch000.dat не удаётся "спрятать" базовый прошник... Надо посмотреть код партийцев... И ещё - если есть возможность проверить - скачай последний sfall и попробуй запихнуть данные в patch001.dat, при созданом patch002.dat Что будет? )))
Только в конфиге sfall не забудь включить поддержку множества ресурсных архивов Подмигивающий
Pages: [1] 2 |   Go Up