• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!

Вопросы по скриптингу

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
  • Первое сообщение
  • #1
Прежде чем задавать вопросы, ознакомьтесь с документацией..
1) Читать онлайн
2) Архив с офлайн-версией(chm) во вложении
 

Вложения

  • Vam_tutor.rar
    171,6 KB · Просмотры: 573
Последнее редактирование модератором:

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
но что-то никак не пойму о чем это они.
Обладает ли предмет маг свойствами или нет..
Т.е. тут Итем как класс, а магик его свойство, если проставлено значение то предмет в игре является магическим и может требовать/пользовать ману.. так наверное.. ::)
 

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
Нужно попробовать поэкспериментировать.
 

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
Все еще для ITEM:
var int visual_skin; //Вариация текстуры для .3DS файла текстур предмета
Из нескольких найденных сообщений, я так понял что это применяется для ASC файла, а не для 3DS и в Gothic II не используется. Правильно?
 

hell9999

Участник форума
Регистрация
12 Апр 2008
Сообщения
2.049
Благодарности
1.168
Баллы
340
var int visual_skin; //Вариация текстуры для .3DS файла текстур предмета
Из нескольких найденных сообщений, я так понял что это применяется для ASC файла, а не для 3DS и в Gothic II не используется. Правильно?
Сия фича используется только на предметах, которые ГГ может экипировать на себя, типа брони, поясов, амулетов и колец. Логично предположить из названия функции, что это возможность для одной модели использовать различные текстуры. В данном случае модель будет использоваться как болванка, на которую будут натягиваться однотипные текстуры, как это например сделано с моделью головы. Но, если не ошибаюсь, в оригинальных скриптах эта возможность не используется.
 

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
Сия фича используется только на предметах, которые ГГ может экипировать на себя, типа брони, поясов, амулетов и колец. Логично предположить из названия функции, что это возможность для одной модели использовать различные текстуры. В данном случае модель будет использоваться как болванка, на которую будут натягиваться однотипные текстуры, как это например сделано с моделью головы. Но, если не ошибаюсь, в оригинальных скриптах эта возможность не используется.
Значит она все-таки работает в G2?
 

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
В туторе VAM указано что класс C_ITEMREACT не используется, но это ведь не значит что он не работает? Функция Npc_StartItemReactModules(), как я понял должна работать с ним в тандеме, однако нигде не могу найти хоть каких-нибудь зацепок. Может кто-нибудь все же работал с этим классом?
 

hell9999

Участник форума
Регистрация
12 Апр 2008
Сообщения
2.049
Благодарности
1.168
Баллы
340
Значит она все-таки работает в G2?
В принципе проверить это просто - создать несколько инстанций одной брони к примеру и указать там разные текстуры в строке визуалскин. Думаю, что работать будет.
 

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
Еще по классу MENU. Я видел в возвращении использовался 3D мир в качестве заставки, но я так понял этот эффект достигался без использования функции backworld из MENU. Также на одном из немецких форумов наткнулся на сообщение что функция не работает. Я несколько раз пробовал указать ZEN-мир, но ничего не получилось. Стало быть функция все-таки не работает, а 3D заставка в Возвращении создавалась с помощью скриптовых расширений?

Вопрос есть также к свойству eventtimermsec. Компилировал с разными значениями, но на меню вроде никакого влияния это не оказало.
 
Последнее редактирование:

redleha


Модостроитель
Регистрация
26 Фев 2008
Сообщения
735
Благодарности
665
Баллы
245
Еще по классу MENU. Я видел в возвращении использовался 3D мир в качестве заставки, но я так понял этот эффект достигался без использования функции backworld из MENU. Также на одном из немецких форумов наткнулся на сообщение что функция не работает. Я несколько раз пробовал указать ZEN-мир, но ничего не получилось. Стало быть функция все-таки не работает, а 3D заставка в Возвращении создавалась с помощью скриптовых расширений?
Да, Сатурас это делал. Без расширений никак.
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
В туторе VAM указано что класс C_ITEMREACT не используется, но это ведь не значит что он не работает?
Означает что обычно двиг это не использует т.е. не задействовано в нем, хотя и прописано..

Похоже на реактор событий, это откуда ?!

Что до меню в В2, там все работает через АСТ.
 

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
Означает что обычно двиг это не использует т.е. не задействовано в нем, хотя и прописано..


Похоже на реактор событий, это откуда ?!

Что до меню в В2, там все работает через АСТ.

Класс C_MENU;
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995

Лебедев

Участник форума
Регистрация
3 Сен 2005
Сообщения
595
Благодарности
77
Баллы
225
Добрый день. Вот у меня появился вопрос LOG_Constants_Notes может содержать только 24 TOPIC? Т.к. ставлю 25 TOPIC надпись запись в дневник, но самого 25 TOPIC не формируется. (прописано в LOG_Constants_Notes.d и в файлах где идёт запрос на запись в 25 TOPIC)

LOG_Constants_Notes содержит 25 строчку:

const string TOPIC_SoldierTrader3 = "Текст";

прописано:
Log_CreateTopic(TOPIC_SoldierTrader3,LOG_NOTE);
B_LogEntry(TOPIC_SoldierTrader3,"Текст");

Надпись: записано в дневник, но TOPIC_SoldierTrader3 не формируется. В чём может быть причина?
 

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.574
Благодарности
4.168
Баллы
915
Не знаю, с чем может быть связана твоя проблема, морра Лебедев, но у меня добавление новой темы в раздел "Общее" работает как часы:
Story\Log_Entries\LOG_Constants_Notes.d:
Код:
<...>
const string Topic_PickPocket = "Карманное воровство";
Story\B_Story\B_TeachThiefTalent.d:
Код:
func int B_TeachThiefTalent(var C_Npc slf,var C_Npc oth,var int talent)
{
<...>
 if(talent == NPC_TALENT_PICKPOCKET)
 {
  Npc_SetTalentSkill(oth,NPC_TALENT_PICKPOCKET,1);
  PrintScreen(PRINT_LearnPickpocket,-1,-1,FONT_Screen,2);
  Log_CreateTopic(Topic_PickPocket,LOG_NOTE);
  return TRUE;
 };
};
Story\Text.d:
Код:
const string PRINT_PickPocketFailed = " - карманная кража не удалась!";
const string PRINT_PickPocketSuccess = " - карманная кража удалась!";
Story\B_Content\B_Beklauen.d:
Код:
<...>
func void B_Beklauen()
{
 if(other.attribute[ATR_DEXTERITY] >= TheftDexGlob)
 {
  B_GiveInvItems(self,other,ItMi_Gold,TheftGoldGlob);
  self.aivar[AIV_PlayerHasPickedMyPocket] = TRUE;
  B_GiveThiefXP();
  Snd_Play("Geldbeutel");
  B_LogEntry(Topic_PickPocket,ConcatStrings(self.name[0],PRINT_PickPocketSuccess));
 }
 else
 {
  B_ResetThiefLevel();
  B_LogEntry(Topic_PickPocket,ConcatStrings(self.name[0],PRINT_PickPocketFailed));
  AI_StopProcessInfos(self);
  B_Attack(self,other,AR_Theft,1);
 };
};
<...>
func void B_StealItems(var int TheftDex,var int Itm,var int Qty)
{
 if(other.attribute[ATR_DEXTERITY] >= TheftDex)
 {
  B_GiveInvItems(self,other,Itm,Qty);
  self.aivar[AIV_PlayerHasPickedMyPocket] = TRUE;
  B_GiveThiefXP();
  B_LogEntry(Topic_PickPocket,ConcatStrings(self.name[0],PRINT_PickPocketSuccess));
 }
 else
 {
  B_ResetThiefLevel();
  B_LogEntry(Topic_PickPocket,ConcatStrings(self.name[0],PRINT_PickPocketFailed));
  AI_StopProcessInfos(self);
  B_Attack(self,other,AR_Theft,1);
 };
};
 

Лебедев

Участник форума
Регистрация
3 Сен 2005
Сообщения
595
Благодарности
77
Баллы
225
Не знаю, с чем может быть связана твоя проблема, морра Лебедев, но у меня добавление новой темы в раздел "Общее" работает как часы:
Story\Log_Entries\LOG_Constants_Notes.d:
Код:
<...>
const string Topic_PickPocket = "Карманное воровство";
Story\B_Story\B_TeachThiefTalent.d:
Код:
func int B_TeachThiefTalent(var C_Npc slf,var C_Npc oth,var int talent)
{
<...>
if(talent == NPC_TALENT_PICKPOCKET)
{
  Npc_SetTalentSkill(oth,NPC_TALENT_PICKPOCKET,1);
  PrintScreen(PRINT_LearnPickpocket,-1,-1,FONT_Screen,2);
  Log_CreateTopic(Topic_PickPocket,LOG_NOTE);
  return TRUE;
};
};
Story\Text.d:
Код:
const string PRINT_PickPocketFailed = " - карманная кража не удалась!";
const string PRINT_PickPocketSuccess = " - карманная кража удалась!";
Story\B_Content\B_Beklauen.d:
Код:
<...>
func void B_Beklauen()
{
if(other.attribute[ATR_DEXTERITY] >= TheftDexGlob)
{
  B_GiveInvItems(self,other,ItMi_Gold,TheftGoldGlob);
  self.aivar[AIV_PlayerHasPickedMyPocket] = TRUE;
  B_GiveThiefXP();
  Snd_Play("Geldbeutel");
  B_LogEntry(Topic_PickPocket,ConcatStrings(self.name[0],PRINT_PickPocketSuccess));
}
else
{
  B_ResetThiefLevel();
  B_LogEntry(Topic_PickPocket,ConcatStrings(self.name[0],PRINT_PickPocketFailed));
  AI_StopProcessInfos(self);
  B_Attack(self,other,AR_Theft,1);
};
};
<...>
func void B_StealItems(var int TheftDex,var int Itm,var int Qty)
{
if(other.attribute[ATR_DEXTERITY] >= TheftDex)
{
  B_GiveInvItems(self,other,Itm,Qty);
  self.aivar[AIV_PlayerHasPickedMyPocket] = TRUE;
  B_GiveThiefXP();
  B_LogEntry(Topic_PickPocket,ConcatStrings(self.name[0],PRINT_PickPocketSuccess));
}
else
{
  B_ResetThiefLevel();
  B_LogEntry(Topic_PickPocket,ConcatStrings(self.name[0],PRINT_PickPocketFailed));
  AI_StopProcessInfos(self);
  B_Attack(self,other,AR_Theft,1);
};
};

у меня:

Story\Log_Entries\LOG_Constants_Notes.d:

const string TOPIC_Trader_OC = "Текст";
const string TOPIC_CityTrader = "Текст";
const string TOPIC_OutTrader = "Текст";
const string TOPIC_SoldierTrader = "Текст";
const string TOPIC_SoldierTrader2 = "Текст";
const string TOPIC_Sorat = "Текст";
const string TOPIC_Teacher = "Текст";
const string TOPIC_Teacher_OC = "Текст";
const string TOPIC_SoldierTeacher = "Текст";
const string TOPIC_OutTeacher = "Текст";
const string TOPIC_CityTeacher = "Текст";
const string TOPIC_Addon_KDWTeacher = "Текст";
const string TOPIC_TalentSmith = "Текст";
const string TOPIC_TalentRunes = "Текст";
const string TOPIC_TalentAlchemy = "Текст";
const string TOPIC_TalentAnimalTrophy = "Текст";
const string TOPIC_TalentMagicCircle = "Текст";
const string TOPIC_WispDetector = "Текст";
const string TOPIC_Language = "Текст";
const string TOPIC_Bonus = "Текст";
const string TOPIC_Diebesgilde = "Текст";
const string TOPIC_1 = "Текст";
const string TOPIC_2 = "Текст";
const string TOPIC_3 = "Текст";
const string TOPIC_SoldierTrader3 = "Текст"; - уже не работает. (Только надпись, запись в дневник. Но записи самой нету.)

У тебя сколько Topic в LOG_Constants_Notes.d? Больше 24?

Upd: было обнаружено, что название темы в LOG_Constants_Notes.d и LOG_Constants_Yoly.d совпадают и движок без предупреждения блокировал срабатывание LOG_Constants_Notes.d
 
Последнее редактирование:

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
Maybe by the factthat this versionis more suitable forg 2but not for g1.
And errorr the gorn.aivar there must bea single character "=".
I'm sorry. This online translation.
 

Matteo

Участник форума
Регистрация
21 Июн 2015
Сообщения
86
Благодарности
3
Баллы
170
OK, Lares' error is fixed, thank you. What can I do about the other error?
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
OK, Lares' error is fixed, thank you. What can I do about the other error?
Version 3.14 can fix this, and there will be 65 errors. I have never come across an english version of gothic.dat and uo.bin. If you attach an attachment to the message. I'll try to recompile and give you no errors.
 

Defman

Участник форума
Регистрация
26 Май 2013
Сообщения
3.165
Благодарности
245
Баллы
300
The problem is that the compiler thinks that B_SetDayTolerance returns nothing but it must return an int value. But it always return a value (because there's a "else" block) but the compiler don't know about it (probably because it thinks that the else block could not be used). Try to add "return 1" after the else statement.

I'm unfamiliar with Daedalus so this code could not work but you should get the idea.

Код:
func int B_SetDayTolerance() {
  if (Wld_IsTime(22,0,23,59))
  {
    return Wld_GetDay() + 1;
  }
  else
  {
    return Wld_GetDay();
  };
return 1;
};
 
Сверху Снизу