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

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

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

MaGoth

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

Вложения

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

Phantom95

Участник форума
Регистрация
31 Июл 2014
Сообщения
2.227
Благодарности
1.910
Баллы
370
Решил проверить функцию var intinv_animate; //Вращение предмета в инвентаре, прописал функцию в Class C_Item предварительно удалив функцию var int nutrition; , дабы не нарушить размерность, эта функция все равно не используется. Затем прописал в инстанции меча intinv_animate = 1; запустил игру, но почему то не работает. Или эта функция работает только в Готике 2 ?
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
Да нет вроде. А лучше снова объясни чо/как делаешь, ибо я лично ничего не понял что ты там с размерностью класса делал и тд.
 

Phantom95

Участник форума
Регистрация
31 Июл 2014
Сообщения
2.227
Благодарности
1.910
Баллы
370
Да нет вроде. А лучше снова объясни чо/как делаешь, ибо я лично ничего не понял что ты там с размерностью класса делал и тд.
При запуске игры у меня вылетала ошибка о том что раздел C_Item превышен на несколько символов, из за этого мне пришлось удалить функцию из класса итем которая всё равно не использовалась, затем я добавил функцию вращения предмета в класс итем, и в инстанции дубины прописал эту функцию и прировнял единице, однако в игре дубина не вращалась
 

cool_er

Участник форума
Регистрация
23 Мар 2015
Сообщения
118
Благодарности
42
Баллы
190
При запуске игры у меня вылетала ошибка о том что раздел C_Item превышен на несколько символов, из за этого мне пришлось удалить функцию из класса итем которая всё равно не использовалась, затем я добавил функцию вращения предмета в класс итем, и в инстанции дубины прописал эту функцию и прировнял единице, однако в игре дубина не вращалась
Ты заменил "int nutrition" на "int inv_animate", и по сути получилось что ты изменил имя переменной которая не используется, не удивительно что ничего не работает.
 

Phantom95

Участник форума
Регистрация
31 Июл 2014
Сообщения
2.227
Благодарности
1.910
Баллы
370
Ты заменил "int nutrition" на "int inv_animate", и по сути получилось что ты изменил имя переменной которая не используется, не удивительно что ничего не работает.
Так, а как по другому сделать, если функции вращения предметов нет в классе итем? Я ее пробовал вставлять как отдельную функцию, ошибка вылетала
 

cool_er

Участник форума
Регистрация
23 Мар 2015
Сообщения
118
Благодарности
42
Баллы
190
Так, а как по другому сделать, если функции вращения предметов нет в классе итем? Я ее пробовал вставлять как отдельную функцию, ошибка вылетала
Никак(только если не править движок, или не использовать принцип действия икаруса). Размерность классов зафиксирована, а именами ничего не изменишь. Создавать новый класс тоже не вариант т.к. для него не будет имплементации в движке.
 

Phantom95

Участник форума
Регистрация
31 Июл 2014
Сообщения
2.227
Благодарности
1.910
Баллы
370
Сделал вот такой скрипт:
instance ie_397(C_Info)
{
npc = IE_397_Announcer;
condition = ie_397_condition;
information = ie_397_info;
important = 0;
permanent = 0;
description = "Выбрать персонажа";
};


func int ie_397_condition()
{
if(Kapitel < 2)
{
return TRUE;
};
};

func void ie_397_info()
{
Info_AddChoice(ie_397,"Псионик",ie_397_psi);
Info_AddChoice(ie_397,"Воин",ie_397_war);
Info_AddChoice(ie_397,"Убийца",ie_397_kil);
Info_AddChoice(ie_397,"Маг",ie_397_mag);
Info_AddChoice(ie_397,"Каторжник",ie_397_vlk);
Info_AddChoice(ie_397,"Оригинальный",ie_397_m);
Info_AddChoice(ie_397,"Повар",ie_397_p);
Info_AddChoice(ie_397,"Кузнец",ie_397_k);
Info_AddChoice(ie_397,"Закончить",ie_397_n);
};

func void ie_397_psi()
{
Mdl_SetVisual(hero,"HUMANS.MDS");
Mdl_SetVisualBody(hero,"hum_body_Naked0",1,1,"Hum_Head_Bald",97,0,DEFAULT);
};

func void ie_397_war()
{
Mdl_SetVisual(hero,"HUMANS.MDS");
Mdl_SetVisualBody(hero,"hum_body_Naked0",4,1,"Hum_Head_Fighter",17,2,DEFAULT);
};

func void ie_397_kil()
{
Mdl_SetVisual(hero,"HUMANS.MDS");
Mdl_SetVisualBody(hero,"hum_body_Naked0",1,0,"Hum_Head_Bald",12,2,DEFAULT);
};

func void ie_397_mag()
{
Mdl_SetVisual(hero,"HUMANS.MDS");
Mdl_SetVisualBody(hero,"hum_body_Naked0",1,1,"Hum_Head_Bald",95,1,-1);
};

func void ie_397_vlk()
{
Mdl_SetVisual(hero,"HUMANS.MDS");
Mdl_SetVisualBody(hero,"hum_body_Naked0",2,1,"Hum_Head_Bald",69,2,DEFAULT);
};

func void ie_397_n()
{
Info_ClearChoices(ie_397);
AI_StopProcessInfos(self);
};

func void ie_397_m()
{
Mdl_SetVisual(hero,"HUMANS.MDS");
Mdl_SetVisualBody(hero,"hum_body_Naked0",4,1,"Hum_Head_Pony",9,0,DEFAULT);
};

func void ie_397_p()
{
Mdl_SetVisual(hero,"HUMANS.MDS");
Mdl_SetVisualBody(hero,"Hum_Body_CookSmith",0,1,"Hum_Head_Fighter",81,1,-1);
};

func void ie_397_k()
{
Mdl_SetVisual(hero,"HUMANS.MDS");
Mdl_SetVisualBody(hero,"hum_Body_CookSmith",1,1,"Hum_Head_Fighter",16,4,-1);
};


instance ie_1(C_Info)
{
npc = IE_397_Announcer;
condition = ie_1_condition;
information = ie_1_info;
important = 0;
permanent = 1;
description = "Выбрать телосложение";
};


func int ie_1_condition()
{
if(Kapitel < 2)
{
return TRUE;
};
};

func void ie_1_info()
{
Info_AddChoice(ie_1,"Тощий",ie_1_t);
Info_AddChoice(ie_1,"Средний",ie_1_s);
Info_AddChoice(ie_1,"Толстый",ie_1_h);
Info_AddChoice(ie_1,"Закончить",ie_1_n);
};

func void ie_1_t()
{
Mdl_SetModelFatness(hero,0);
};

func void ie_1_s()
{
Mdl_SetModelFatness(hero,1);
};

func void ie_1_h()
{
Mdl_SetModelFatness(hero,2);
};

func void ie_1_n()
{
Info_ClearChoices(ie_1);
AI_StopProcessInfos(self);
};
Все работает великолепно, НО после перезагрузки визуализация гг слетает на стандартную, в чем подвох?
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
Ну, в сохранение видимо не пишится это, но это легко поправить, записывай в переменные знаечния текущего визуала, и при загрузке игры меняй, все.
 

Beowulf

Участник форума
Регистрация
21 Ноя 2010
Сообщения
1.941
Благодарности
1.455
Баллы
465
Мiльтен как-то писал про изменение внешности посредством изменения лица на скин с татуировкой и его сохранении при загрузке. Может поможет, если по аналогии попробовать поступить.
http://port-of-rpg.com/realizaciya-tatuirovki/
 

Pinic

Участник форума
Регистрация
14 Июн 2013
Сообщения
128
Благодарности
13
Баллы
185
Как правильно установить скриптовую болванку? Сделал как там написано, но проект не создается вылезает вот это
Jhew.png

И так для всех файлов.
 
Последнее редактирование:

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
Опиши еще свои действия по шагам
 

Pinic

Участник форума
Регистрация
14 Июн 2013
Сообщения
128
Благодарности
13
Баллы
185
Скачал от сюда -- закинул в папку Content, как там все и написано, создаю новый проект
Prov_01.png
нажимаю ок, вылезает это(для каждого файла)
Jhew.png
Prov_02.png
нажимаю отмена, вроде бы все норм, но открывая какой нибудь файл вылезает
Prov_03.png
Prov_04.png
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
Вот все что ты скачал, закинь в папку "C:\Program Files (x86)\GothicSourcer V3.14\Gothic Projects\SolProv_012\PrjGOTHIC"
И попробуй откомпиль
 

Pinic

Участник форума
Регистрация
14 Июн 2013
Сообщения
128
Благодарности
13
Баллы
185
Закинул, часть файлов началось открываться, а вторая часть теперь стала в папке без названия и все ровно не открываются
Prov_5.png

P.S. Два года назад у меня была такая же проблема, но мне Hell9999 дал какой то файл, но ссылка на файл уже не работает. Тут начиная с #245
 

Pinic

Участник форума
Регистрация
14 Июн 2013
Сообщения
128
Благодарности
13
Баллы
185
И опять не могу понять в чем ошибка
Osh_01.png
Вот стартап (как правильно зделать стартап не знал взял там же где и мешь)
Код:
FUNC void STARTUP_MM_PART_CITY ()
{

};

    FUNC void INIT_SUB_MM_PART_CITY ()
    {
    };

FUNC void INIT_MM_PART_CITY ()
{
    B_InitMonsterAttitudes ();
    B_InitGuildAttitudes();
  
  
    INIT_SUB_MM_PART_CITY();
};

FUNC void STARTUP_MM_PART_RIVER ()
{
};

    FUNC void INIT_SUB_MM_PART_RIVER ()
    {
    };

FUNC void INIT_MM_PART_RIVER ()
{
    B_InitMonsterAttitudes ();
    B_InitGuildAttitudes();
  
  
    INIT_SUB_MM_PART_RIVER();
};

FUNC void STARTUP_MM_PART_BEACH ()
{

};

    FUNC void INIT_SUB_MM_PART_BEACH ()
    {
    };

FUNC void INIT_MM_PART_BEACH ()
{
    B_InitMonsterAttitudes ();
    B_InitGuildAttitudes();
  
  
    INIT_SUB_MM_PART_BEACH();
};

FUNC void STARTUP_MM_PART_HOF ()
{
    Wld_InsertNpc (PC_Hero,"PART_FARM_GAMEMASTER"); // Gamemaster
    Wld_InsertNpc (MIL_50_Stadtwache, "NW_SITI_PLOSH_05");
  
  
    // MONSTER
    // SCHAFE
    Wld_InsertNpc (Sheep, "PART_FARM_SHEEP_01");
    Wld_InsertNpc (Sheep, "PART_FARM_SHEEP_02");
    Wld_InsertNpc (Sheep, "PART_FARM_SHEEP_03");
    Wld_InsertNpc (Sheep, "PART_FARM_SHEEP_04");
    Wld_InsertNpc (Sheep, "PART_FARM_SHEEP_05");
    // RATTEN

    Wld_InsertNpc (YGiant_Rat, "PART_FARM_JRATTE4");
    Wld_InsertNpc (YGiant_Rat, "PART_FARM_JRATTE4");
    Wld_InsertNpc (YGiant_Rat, "PART_FARM_JRATTE1");
    Wld_InsertNpc (YGiant_Rat, "PART_FARM_JRATTE1");
    //Волки
    Wld_InsertNpc (YWolf, "PART_FARM_WOLF_08");
    Wld_InsertNpc (YWolf, "PART_FARM_WOLF_08");
    Wld_InsertNpc (YWolf, "PART_FARM_WOLF_05");
    Wld_InsertNpc (YWolf, "PART_FARM_WOLF_05A");
  
    //MOLERAT
    Wld_InsertNpc (Molerat, "PART_FARM_MOLERAT1");
    Wld_InsertNpc (Molerat, "PART_FARM_MOLERAT1");
    //Гоблины
    Wld_InsertNpc (YGobbo_Green, "PART_FARM_GOBLIN_01");
    Wld_InsertNpc (YGobbo_Green, "PART_FARM_GOBLIN_02");
    Wld_InsertNpc (YGobbo_Green, "PART_FARM_GOBLIN_03");
    Wld_InsertNpc (Gobbo_Green, "PART_FARM_GOBLIN_04");
    //MINECRAWLER
    //Wld_InsertNpc (Minecrawler, "PART_FARM_GOBLIN_05");
};

    FUNC void INIT_SUB_MM_PART_HOF ()
    {
    };

FUNC void INIT_MM_PART_HOF ()
{
    B_InitMonsterAttitudes ();
    B_InitGuildAttitudes();
  
  
    INIT_SUB_MM_PART_HOF();
};


//START UP FЬR DIE MOD - WELT AN SICH
//***************************************

FUNC void STARTUP_MM_WORLD ()
{
    STARTUP_MM_PART_CITY();
    STARTUP_MM_PART_RIVER();
    STARTUP_MM_PART_BEACH();
    STARTUP_MM_PART_HOF();
    Kapitel = 1;
};

FUNC void INIT_MM_WORLD ()
{
    INIT_SUB_MM_PART_CITY();
    INIT_SUB_MM_PART_RIVER();
    INIT_SUB_MM_PART_BEACH();
    INIT_SUB_MM_PART_HOF();
  
    B_InitMonsterAttitudes ();
    B_InitGuildAttitudes();
  
  
};







//видеосцена
func void STARTUP_LEVEL_SCENE ()
{

  
};


func void INIT_LEVEL_SCENE ()
{
  B_InitMonsterAttitudes ();
    B_InitGuildAttitudes();
//    B_InitNpcGlobals ();
};
 

hell9999

Участник форума
Регистрация
12 Апр 2008
Сообщения
2.049
Благодарности
1.169
Баллы
340
И опять не могу понять в чем ошибка
Osh_01.png
Вот стартап (как правильно зделать стартап не знал взял там же где и мешь)
В сообщении же русским по белому написано, в чем проблема.
В начале стартап файла должны быть следующие строки:

func void startup_global()
{
Game_InitGerman();
};

func void init_global()
{
Game_InitGerman();
};
 

Диккен

Участник форума
Регистрация
12 Июн 2004
Сообщения
469
Благодарности
127
Баллы
210
Решил проверить функцию var intinv_animate; //Вращение предмета в инвентаре, прописал функцию в Class C_Item предварительно удалив функцию var int nutrition; , дабы не нарушить размерность, эта функция все равно не используется. Затем прописал в инстанции меча intinv_animate = 1; запустил игру, но почему то не работает. Или эта функция работает только в Готике 2 ?
Что значит не работает и не прописана, если все на месте? Ах да, речь то про Г1 или Г2?

instance ItRi_Addon_MorgansRing_Mission(C_Item)
{
name = "Кольцо Моргана";
mainflag = ITEM_KAT_MAGIC;
flags = ITEM_RING | ITEM_MISSION;
value = 500;
visual = "ItRi_Prot_Total_02.3DS";
material = MAT_METAL;
on_equip = Equip_MorgansRing;
on_unequip = UnEquip_MorgansRing;
wear = WEAR_EFFECT;
effect = "SPELLFX_ITEMGLIMMER";
description = name;
text[1] = "Кольцо украшено множеством рун.";
text[2] = NAME_ADDON_BONUS_1H;
//text[2] = "Улучшает владение одноручным оружием, изменяя модификатор оружия";
text[3] = "Принцип работы: замещает модификатор оружия";
count[2] = 10;
text[5] = NAME_Value;
count[5] = value;
inv_zbias = INVCAM_ENTF_RING_STANDARD;
inv_rotz = INVCAM_Z_RING_STANDARD;
inv_rotx = INVCAM_X_RING_STANDARD;
inv_animate = TRUE;
};
 

cool_er

Участник форума
Регистрация
23 Мар 2015
Сообщения
118
Благодарности
42
Баллы
190
Что значит не работает и не прописана, если все на месте? Ах да, речь то про Г1 или Г2?

instance ItRi_Addon_MorgansRing_Mission(C_Item)
{
name = "Кольцо Моргана";
mainflag = ITEM_KAT_MAGIC;
flags = ITEM_RING | ITEM_MISSION;
value = 500;
visual = "ItRi_Prot_Total_02.3DS";
material = MAT_METAL;
on_equip = Equip_MorgansRing;
on_unequip = UnEquip_MorgansRing;
wear = WEAR_EFFECT;
effect = "SPELLFX_ITEMGLIMMER";
description = name;
text[1] = "Кольцо украшено множеством рун.";
text[2] = NAME_ADDON_BONUS_1H;
//text[2] = "Улучшает владение одноручным оружием, изменяя модификатор оружия";
text[3] = "Принцип работы: замещает модификатор оружия";
count[2] = 10;
text[5] = NAME_Value;
count[5] = value;
inv_zbias = INVCAM_ENTF_RING_STANDARD;
inv_rotz = INVCAM_Z_RING_STANDARD;
inv_rotx = INVCAM_X_RING_STANDARD;
inv_animate = TRUE;
};
Речь про первую готику.
 
Сверху Снизу