Показать сообщение отдельно
Старый 26.12.2009, 10:11   #3135
Skaarj

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: Gothic 1, 2, 3: Технические вопросы

2Shifroval:
Есть у меня сведения, что Бастер почему то перестаёт давать опыт за рога, если у ГГ 39 уровень и более. Замечено это было не мной, но автор писал, мол, как только ГГ получает 39 уровень, опыта будет даватся 0...
Могу подтвердить его слова, действительно, после взятия 40-го уровня "мой друган" Бастер выдает только +0 опыта и правильную сумму золота.

Скриптолог откроет скрипты Г2 и посмотрит, нет ли там чего странного.
Я внимательно его изучал неделю назад (после однократного бага с опытом), сильно многоходовый на условия, но там все нормально. Однако могу дополнить 1й вариант - мой случай с багом произошел ДО 39-го уровня, когда я выпил ускорителя и добежал до Бастера, то тут меня и накрыло багом. Вторая попытка была удачнее, соранился рядом с ним и загрузил повторно - опыт отсыпали сполна. ;)

Кстати, выдача опыта может ещё зависеть не только от уровня, но и от главы. В таком случае возможны 2 проверки: по уровню и по главе. И одна мешает другой
ничего там не мешает, вот сама проверка
func void DIA_Buster_BringTrophyShadowbeast_Info()
Cпойлер(щелкните, чтобы прочесть):
{
* * *var int BusterTrophyShadowbeastCount;
* * *var int XP_BringBusterTrophyShadowbeast;
* * *var int XP_BringBusterTrophyShadowbeasts;
* * *var int BustersBusterTrophyShadowbeastOffer;
* * *var int BusterTrophyShadowbeastGeld;
* * *if(Kapitel >= 5)
* * *{
* * * * * *AI_Output(self,other,"DIA_Buster_BringTrophyShado wbeast_13_00"); * * *//Моего торговца из города больше нет.
* * * * * *AI_Output(other,self,"DIA_Buster_BringTrophyShado wbeast_15_01"); * * *//Как это?
* * * * * *AI_Output(self,other,"DIA_Buster_BringTrophyShado wbeast_13_02"); * * *//Он мертв. Можешь оставить рога себе. Мне с этим тоже нечего делать.
* * * * * *MIS_Buster_KillShadowbeasts_DJG = LOG_SUCCESS;
* * * * * *B_GivePlayerXP(XP_Ambient);
* * *}
* * *else if(PLAYER_TALENT_TAKEANIMALTROPHY[TROPHY_ShadowHorn] == FALSE)
* * *{
* * * * * *AI_Output(other,self,"DIA_Buster_ANIMALTROPHYSHAD OWBEAST_15_03"); * * *//Как потрошить?
* * * * * *AI_Output(self,other,"DIA_Buster_ANIMALTROPHYSHAD OWBEAST_13_04"); * * *//Ты этого не знаешь? Ну ты даешь!.
* * * * * *Info_ClearChoices(DIA_Buster_BringTrophyShadowbea st);
* * * * * *Info_AddChoice(DIA_Buster_BringTrophyShadowbeast, "К этому мы еще вернемся.",DIA_Buster_BringTrophyShadowbeast_back) ;
* * * * * *Info_AddChoice(DIA_Buster_BringTrophyShadowbeast, B_BuildLearnString("Научи меня отламывать рог у мракориса",B_GetLearnCostTalent(other,NPC_TALENT_T AKEANIMALTROPHY,TROPHY_ShadowHorn)),DIA_Buster_Bri ngTrophyShadowbeast_teach);
* * *}
* * *else
* * *{
* * * * * *BusterTrophyShadowbeastCount = Npc_HasItems(other,ItAt_ShadowHorn);
* * * * * *XP_BringBusterTrophyShadowbeast = Shadowbeast.level * XP_PER_VICTORY;
* * * * * *BustersBusterTrophyShadowbeastOffer = Value_ShadowHorn + Buster_Bonus;
* * * * * *if(BusterTrophyShadowbeastCount == 1)
* * * * * *{
* * * * * * * * *AI_Output(other,self,"DIA_Buster_BringTrophyShado wbeast_15_05"); * * *//У меня есть для тебя рог.
* * * * * * * * *B_GivePlayerXP(XP_BringBusterTrophyShadowbeast);
* * * * * * * * *B_GiveInvItems(other,self,ItAt_ShadowHorn,1);
* * * * * * * * *BusterTrophyShadowbeastCounter = BusterTrophyShadowbeastCounter + 1;
* * * * * *}
* * * * * *else
* * * * * *{
* * * * * * * * *AI_Output(other,self,"DIA_Buster_BringTrophyShado wbeast_15_06"); * * *//Тут у меня есть еще рога для твоего торговца.
* * * * * * * * *B_GiveInvItems(other,self,ItAt_ShadowHorn,BusterTr ophyShadowbeastCount); * * * * * * * * *XP_BringBusterTrophyShadowbeasts = BusterTrophyShadowbeastCount * XP_BringBusterTrophyShadowbeast;
* * * * * * * * *BusterTrophyShadowbeastCounter = BusterTrophyShadowbeastCounter + BusterTrophyShadowbeastCount;
* * * * * * * * *B_GivePlayerXP(XP_BringBusterTrophyShadowbeasts);
* * * * * *};
* * * * * *AI_Output(self,other,"DIA_Buster_BringTrophyShado wbeast_13_07"); * * *//Хорошо. Давай сюда. Принеси мне еще. Кто знает, долго ли они ему еще нужны.
* * * * * *AI_Output(self,other,"DIA_Buster_BringTrophyShado wbeast_13_08"); * * *//Вот тебе твоя доля.
* * * * * *BusterTrophyShadowbeastGeld = BusterTrophyShadowbeastCount * BustersBusterTrophyShadowbeastOffer;
* * * * * *CreateInvItems(self,ItMi_Gold,BusterTrophyShadowb eastGeld);
* * * * * *B_GiveInvItems(self,other,ItMi_Gold,BusterTrophyS hadowbeastGeld);
* * *};
};


Могу предположить (надо проверить), что ошибка может быть связана со строчками, выделеными жирным, т.е. передача рогов опережает выдачу опыта, хотя если отдавать один рог, то все наоборот.

2Mikroid:
Касательно Г2НВ данная инфа точно неверна.
В данный момент времени на 44м уровне опыт уже не получаю, ни за один рог, ни за все... кто его знает, что там случилось в скриптах. *:-/

Добавление от 12/25/09, в 12:59:22
p.s. Хотя есть там еще одна переменная "BusterTrophyShadowbeastCounter", к. равняется общему числу рогов и нигде в диалоге не проверяется. На текущий момент у меня эта переменная равна 13, смотрим через GVE (Gothic Редактор переменных).

Добавление от 12/26/09, в 09:30:59
2Shifroval:
По поводу рогов и копыт, то шут их (скрипты) поймешь, вот сейчас на 40м уровне при BusterTrophyShadowbeastCounter=13 нормально Бастер отсыпал мне опыта на 5 штук, хотя при этом не было закрыто куча доп. заданий. Где-то видимо зашита проверка на эту переменную в коде, может после активации/сдади задания на драконовые яйца Беннету (этот квест у меня был завершен на момент поимки бага на 40+ уровне).
Ответить с цитированием