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

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Друзья, спешите принять участие в поэтическом конкурсе "Весенние поэты 2024"!
    Ждем именно вас!

    Ссылка на конкурсную тему - тык

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

MaGoth

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

Вложения

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

Jr13San


Модостроитель
Регистрация
1 Апр 2010
Сообщения
435
Благодарности
261
Баллы
230
func int B_SetDayTolerance()
{
if (Wld_IsTime (22, 0, 23, 59))
{
return Wld_GetDay () + 1;
};
return Wld_GetDay ();

};

Объясняю для новичков...
Функция типа int всегда должна возвращать значение(любое), на то она и дана, чтобы возвращать значение. Если же тебе не надо никакого значения от этой функции, а надо, чтобы выполнились простые внутренние функции, то используй тип void.

Выше поставлено условие, если она выполняется, то функция возвращает одно значение, в остальных случаях она возвращает другое значение...
И ещё... почитай лучше тутор по скриптам, который тебе всё время пытается предложить Dimmell. Там есть функции и есть к ним описание и прокомментирована почти каждая строка.
 

Dimmell

Участник форума
Регистрация
23 Ноя 2008
Сообщения
2.899
Благодарности
111
Баллы
285
Назрел такой вопрос: хочу жарить в кузнечном горне падальщика :D , так этот гад при выходе из диалога добавляет горячую заготовку. Если в инвентаре есть хоть одна горячая заготовка - лишняя убирается нормально из скриптов, если нет горячей заготовки - появляется одна.
Кто-нибудь знает как обойти это "одаривание" горячей заготовкой?

Добавлено:
вопрос снят. Пост удалить не смог.
 

Spielmann

Участник форума
Регистрация
22 Май 2010
Сообщения
106
Благодарности
7
Баллы
175
MaGoth, можно как не-будь сделать так чтобы при ударе мечом был такой ефект как во время использовання руны, как посох мага огня у Возвращении, или коготь Белиара. Мне б только в каких файлах находится и что надо изминять, можно приблезительно. Зарание спасибо!
 

Друид

Участник форума
Регистрация
21 Ноя 2009
Сообщения
1.169
Благодарности
395
Баллы
285
MaGoth, можно как не-будь сделать так чтобы при ударе мечом был такой ефект как во время использовання руны, как посох мага огня у Возвращении, или коготь Белиара. Мне б только в каких файлах находится и что надо изминять, можно приблезительно. Зарание спасибо!

Смотри файл:
B_AssessDamage.d
строка B_BeliarsWeaponSpecialDamage(other,self);

И функция в файле:
B_BeliarsWeaponSpecialDamage.d

А изменять вот это:
Wld_PlayEffect("spellFX_BELIARSRAGE",oth,oth,0,0,0,FALSE);
если хочешь другой визуальный эффект когтя.
 

Feuermagier


Модостроитель
Регистрация
13 Апр 2008
Сообщения
932
Благодарности
130
Баллы
225
Народ такая ситуация: мне надо заставить ГГ прогуляться до вейпойнта, проиграть на вейпойнте анимацию и отойти на другой вей. Все это без участия игрока должно происходить, при пересечении триггера.
Я подсмотрел, как это реализовано в Диккурике, сделал по аналогии, но из всего скрипта выполняется только AI_Standup(hero); и AI_PlayAni(hero,"T_PLUNDER"); а все остальные строчки , по какой то причине игнорируются. Вот скрипт, подскажите, что тут не так?
Код:
var int GKDGOTO;

func void EVT_ХХХ01_FUNC()
{
	If((GKDХХХ == TRUE) && (GKDGOTO == FALSE))
		{
		AI_Standup(hero);
		AI_Wait(hero,1);
		AI_StandupQuick(hero);			
		AI_GotoWP(hero,"LW_ХХХ_F");
		AI_PlayAni(hero,"T_PLUNDER");
		AI_GotoWP(hero,"LW_ХХХ_S");
		GKDGOTO = TRUE;
			
		};
};
 

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
Подозреваю, что это из-за асинхронности. Т. е. AI_GotoWP(hero,"LW_ХХХ_S") отрабатывает до того, как завершилась анимация. Как с этим бороться? Самый простой способ - поставить AI_Wait после вызова анимации.
 

Feuermagier


Модостроитель
Регистрация
13 Апр 2008
Сообщения
932
Благодарности
130
Баллы
225
Проблемато то в том что и AI_GotoWP(hero,"LW_ХХХ_F"); не проигрывается, но попробуем как ты сказал. Возможно подействует
 

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
В том-то и дело, что движок пытается заставить персонаж начать делать одно дело (переход на WP) до того, как он завершил другое (анимацию). Раз он занят анимацией, то не отрабатывает переход.

Повторюсь - это мое предположение.
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.238
Благодарности
2.579
Баллы
455
Feuermagier,
Поставь AI_Wait МЕЖДУ КАЖДЫМ AI_GotoWP и AI_PlayAni. У меня работало, правда я использовал не для ГГ, но думаю это не имеет значения.

AI_Standup(hero);
AI_Wait(hero,1);
AI_StandupQuick(hero);
AI_GotoWP(hero,"LW_ХХХ_F");
AI_Wait(hero,1);
AI_PlayAni(hero,"T_PLUNDER");
AI_Wait(hero,1);
AI_GotoWP(hero,"LW_ХХХ_S");
 

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
1 секунды может оказаться мало. Похожие проблемы возникали, когдя я в "народе Миненталя" делал диалоги с количеством участников больше 2.
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.238
Благодарности
2.579
Баллы
455
kraw, помоему AI_Wait по разному работает в диалогах и между анимациями. У меня AI_Wait срабатывал как прерывание и следующая команда AI_GotoWP не начиналась, пока не была выполнена полностью AI_PlayAni.
 

Feuermagier


Модостроитель
Регистрация
13 Апр 2008
Сообщения
932
Благодарности
130
Баллы
225
Ребята, спасибо за подсказки, но по какой то причине не сработало. Все равно анимация проигрывается сразу по пересечении триггера и гг ни куда не идет. Есть ли еще какие нибудь варианты решения?
 

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
1) Проверь, работает ли сам переход без анимации.

2) если работает, то попробуй увеличить время ожидания, чтобы оно было заведомо больше времени анимации.
 

Feuermagier


Модостроитель
Регистрация
13 Апр 2008
Сообщения
932
Благодарности
130
Баллы
225
Нет, переход не работает сам по себе
ЗЫ Извиняюсь что не все сразу пишу в подробностях*flowers*
 

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
Значит анимация тут не при чем. Проверь правильность написания WP, доступность WP (наличие пути из текущей точки, и что этот путь никем не заблокирован.)
 

Feuermagier


Модостроитель
Регистрация
13 Апр 2008
Сообщения
932
Благодарности
130
Баллы
225
Господа, всем спасибо за подсказки.
Все решил вот таким путем:
Код:
var int GKDGOTO;

func void EVT_ХХХ01_FUNC()
{
	If((GKDХХХ == TRUE) && (GKDGOTO == FALSE))
		{
		
		AI_Standup(self);
		AI_Output(hero,hero,"dia_NONE_1003_IRIC_6_1");	//Здесь можно ни чего не писать, тк на экран это не принтится. Я просто вставил кусок из нашей озвучки (dia_NONE_1003_IRIC_6_1).
		AI_Wait(hero,1);
		AI_StandupQuick(hero);
		AI_GotoNpc(hero,MeatbugGROB1);
		AI_GotoNpc(MeatbugGROB1,MeatbugGROB1);
		AI_Standup(hero);
		AI_Wait(hero,3);
		AI_StandupQuick(hero);			
		AI_GotoWP(hero,"LW_ХХХ_F");
		AI_Wait(hero,3);
		AI_PlayAni(hero,"T_PLUNDER");
		AI_Wait(hero,3);
		AI_GotoWP(hero,"LW_ХХХ_S");
		GKDGOTO = TRUE;
			
		};
};
Мясной жук как всегда выручает:D
ЗЫ Возможно тут некоторые строчки лишние, но убирать их мне что то страшновато.
 

Друид

Участник форума
Регистрация
21 Ноя 2009
Сообщения
1.169
Благодарности
395
Баллы
285
Здесь можно ни чего не писать, тк на экран это не принтится. Я просто вставил кусок из нашей озвучки (dia_NONE_1003_IRIC_6_1).
В каком-то моде на Г2 видел, как ГГ в самом начале через триггер бакланит сам с собой. И принтается на экран - не как диалог, а как случайные разговоры в Г1. Только вот самому такое не получилось сделать.
 

Солве

Участник форума
Регистрация
2 Июл 2010
Сообщения
16
Благодарности
0
Баллы
150
У меня еще несколько вопросов...
1) я никак не могу найти скрипт Галахарда все есть а именно этот не могу найти... скажите название
2) какой скрипт надо править что бы изменить круг магии необходимый для руны и расход маны на нее http://dimmell.clan.su/forum/13-22-3#5349
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.371
Благодарности
7.804
Баллы
995
Солве, Если не можешь найти, значит декомпилировал оригинальный, датник датник и Оушник Возвращения, в этом случае ищи этот файл в папке _Misk. Название у него скорее всего другое, поэтому, сверяйся по содержимому.
 

Солве

Участник форума
Регистрация
2 Июл 2010
Сообщения
16
Благодарности
0
Баллы
150
нет дело в том что все остальные скрипты возвращения присутствуют. А как на счет руны?*???*
 
Сверху Снизу