Показать сообщение отдельно
Старый 15.10.2007, 11:45   #1879
okin

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

По умолчанию Re: М: Скриптинг в Готике

Не поняла...

void CreateInvItem (c_npc n0, int n1)
c_item Npc_GetEquippedArmor (c_npc n0)

Как получается, что в первой функции n1 int, а вторая выдает с_item, если в обоих случаях может оказаться вроде бы одно и то же, например, ITAR_KDW_L_Addon?

CreateInvItem (self, ITAR_KDW_L_Addon)
и
var C_Item myArm;
myArm = Npc_GetEquippedArmor(xxx);
if (Hlp_IsItem(myArm,ITAR_KDW_L_Addon) == .....

Каким образом одна и та же ITAR_KDW_L_Addon оказывается принадлежащей к разным типам??? Едина в двух лицах - и предмет, и его номер?

И если так, можно ли получить номер надетого на непися доспеха? Или создать C_item? И вообще, где предметам присваивается ID? В явном виде, как у пнс, нету...

Добавление от 10/15/07, в 12:05:41
Смешно...
Поигралась еще немножко с AI_StopProcessInfos и Wld_DetectNpc.
Поскольку

{Тру-ля-ля диалог
Wld_SpawnNpcRange(hero,none_3101_ghastly,3,100);
*Npc_SetTarget (none_3101_ghastly, hero);
*AI_Attack(none_3101_ghastly);
*AI_StopProcessInfos(self);
*AI_Teleport(none_3001_MadMage,"TOT");
};

через раз приводила к разным результатам и оказался важен порядок строк, решила просто продублировать строчку AI_StopProcessInfos. Вставила сразу пяток, мне не жалко! *:) В итоге маг стал ВСЕГДА нормально уходить в ТОТ, а вызванные ВСЕГДА застывают... Из двух описанных вариантов остался один. Сие приятно, но...
Вопрос: нету идей, почему нарушается поведение вызванных? Хотя бы в какую сторону думать и проверять? У меня интеллехту не хватат...

Кстати, что конкретно делает AI_StopProcessInfos? Например, AI_StopProcessInfos(other) и AI_StopProcessInfos(self) синонимичны или могут быть нюансы?

Если убрать телепорт, то теперь диалог нормально заканчивается ВСЕГДА, дальше драка и начало нового диалога... Так что появился хоть один стабильный вариант проигрывания сюжета, ура, будем радоваться и искать следующие грабли!
Глупо, но эффективно! *;D

Попробовала продублировать Wld_DetectNpc. Номер не прошел...
Cпойлер(щелкните, чтобы прочесть):
Npc_PerceiveAll(self);
* * *if (Npc_KnowsInfo(other,DIA_madmage_transform))
* * *{ if (Wld_DetectNpc(self,ghastly,ZS_MM_Ghastly,-1)>0) * * * * * *
* * * * * *{return FALSE;
* * * * * *};
* * *if (Wld_DetectNpc(self,ghastly,ZS_MM_Ghastly,-1)>0) * * * * * *
* * * * * *{return FALSE;
* * * * * *};
* * *if (Wld_DetectNpc(self,ghastly,ZS_MM_Ghastly,-1)>0) * * * * * *
* * * * * *{return FALSE;
* * * * * *};
* * *if (Wld_DetectNpc(self,ghastly,ZS_MM_Ghastly,-1)>0) * * * * * *
* * * * * *{return FALSE;
* * * * * *};
* * *if (Wld_DetectNpc(self,ghastly,ZS_MM_Ghastly,-1)>0) * * * * * *
* * * * * *{return FALSE;
* * * * * *};
* * *return TRUE; * * *
* * *};

Эта штука всегда выдает true. Если написано правильно (проверьте,а? но вроде правильно, с условием ">=0" всегда честный false), то он гастликов в упор не видит... Может, призраков замечать не положено?! ;D

Вот такие пироги... Мало мне самолично зарытых собак, еще и такие попадаются...
Ответить с цитированием