Цитата
Talarasha
NW_JOURNAL_ENTRYCHAPTER1 имеет какие-то связи с AddJournalQuestEntry("CHAPTER1 ", 10, oPC, TRUE, TRUE); - я правильно понял?
Нвн уже удалил, так что не проверить
Имеет, имеет. Функцию AJQE можно представить в следующем виде:
Neverwinter Script
void AddJournalQuestEntry(string szPlotID, int nState, object oCreature, int bAllPartyMembers=TRUE, int bAllPlayers=FALSE, int bAllowOverrideHigher=FALSE)
{
AddEntry();
SetLocalInt(object oCreature,"NW_JOURNAL_ENTRY"+szPlotID,nState);
// (для наглядности опущены проверки bAllPartyMembers, bAllPlayers и bAllowOverrideHigher)
}
Где AddEntry(); - какой-то системный функционал по обновлению журнала. Но этим функционалом функция AJQE не заканчивается, она еще и вешает переменную для получения доступа к журналу. Просто это в отличие от AddEntry(); визуально не определяется, поэтому не совсем очевидно, но повсевместно используется в скриптах оригинальной кампании. А работа с журналом по типу:
Neverwinter Script
AddJournalQuestEntry("TAG",#,oPC,TRUE,TRUE);
SetLocalInt(oPC,"Q1_TAG_ID",#);
if(GetLocalInt(),"Q1_TAG_ID") == #)
{
AddJournalQuestEntry("TAG",#+1,oPC,TRUE,TRUE);
SetLocalInt(oPC,"Q1_TAG_ID",#+1);
}
просто игнорирует оригинальный функционал и заводит по отдельной переменной на журнальные записи. Само по себе это не страшно, просто требует новый шаблон (которых и так бывает немало) и увеличивает объем кода (к каждому обновлению записи - по обновлению переменной), поэтому менее грамотно.
Цитата
зы: кто там спрашивает периодически, сколько скрипты изучать? я вот спустя почти 10 лет что-то новое узнаю иногда, как сейчас
На мой взгляд, гораздо, гораздо меньше. Года должно хватить всем. Главное ведь не выучить названия и функционал всех-всех функций, а понять принцип, систему. Как только понял - все, дальше все задачи под силу, нужно только представлять, что хочешь. Поэтому владеющим C вообще ничего учить не надо, зашел и кодь, функции - вот они все. Вышеприведенная фишка - это просто недосмотр со стороны разрабов, которые не упомянули про это в описании AJQE.