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

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

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

MaGoth

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

Вложения

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

Фаринг

Участник форума
Регистрация
24 Мар 2010
Сообщения
425
Благодарности
0
Баллы
180
Какие программы нужны для построения среднего мода, и свисти на минимум юзанье блокнота:) (хотя понимаю что без него не обойтись).
И еще, т.к. проги обычно немецкие, желательно русификатор.
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.371
Благодарности
7.804
Баллы
995
Фаринг, На сколько я знаю, для модостроения достаточно одной единственной программы - ГотикСоурсер. Больше абсолютно ничего не требуется по работе с кодом/скриптами.
Что до немецких прог и прочего, то ни немцы ни кто либо другой пока ничего лучше Соурсера не придумали.
Что до общих программ, то это:
- 3дс Макс (модели и анимация)
- Фотошоп (графика и текстуры)
- СаундФорж (звук, музыка озвучка, но если делать новую, потребуется юзать Миди систему - ДиректПродюссер).
Ну и все пожалуй...
 

Jr13San


Модостроитель
Регистрация
1 Апр 2010
Сообщения
435
Благодарности
261
Баллы
230
Vitalik, декомпилируй menu.dat
 

Vitalik

Участник форума
Регистрация
30 Май 2010
Сообщения
108
Благодарности
0
Баллы
165
У меня такая проблемя я установил аддон возвращение и хочу редактировать ГГ захожу в Gothic II\_work\data\Scripts\_compiled\GOTHIC.dat - декомпилирую и изменяю своего ГГ потом компилирую и захожу в игру, а в игре нет изменений что делать? Если это не тот файл тогда где файлы *.dat от аддона возвращение?

Уже ясно:D

MaGothЕще один дубль и пойдут преды.
 

Wallerstein

Участник форума
Регистрация
26 Апр 2009
Сообщения
965
Благодарности
23
Баллы
195
HeDeDe,
Ничего у меня не получилось. Светящиеся глаза у меня появились где-то в районе задницы. Но все-равно спасибо за помощь.

Попробую помутить с анимированной текстурой пока. Но если будут какие-то еще предложения - с удовольствием выслушаю.
 

_ZEN_

Участник форума
Регистрация
9 Фев 2010
Сообщения
45
Благодарности
3
Баллы
170
Пишу мод для Готики 2 НВ, но нигде не нашёл, как можно спать не на кровати, а на шкуре. Может быть, кто-нибудь подскажет, как это сделать, или в каком моде реализована подобная возможность?
 

Мільтен

Участник форума
Регистрация
27 Июн 2008
Сообщения
862
Благодарности
427
Баллы
265
Пишу мод для Готики 2 НВ, но нигде не нашёл, как можно спать не на кровати, а на шкуре. Может быть, кто-нибудь подскажет, как это сделать, или в каком моде реализована подобная возможность?

Надо как в Диккурике, чтобы шкурка было с собой и ее в любой момент можно было вытянуть и лечь не нее? Если да, то нужно создать саму шкурку. В функции ее написать, чтобы ГГ выбросил предмет из инвентаря(шкурку), проигралась анимация "Лечь на постель" и стартовал обычный мобси-диалогс кроватью.
Возвращение:

Код:
func void use_sleepfur()
{
    CreateInvItems(self,itmi_sleepsack,1);//создает шкуру в инвентяре ГГ
    SLEEPONGROUND = TRUE;//присваивает значение Истина данной  переменной. Не знаю, зачем, может где-то дальше используется.
    B_StopLookAt(self);//ГГ перестает смотреть 
    AI_StopPointAt(self);//ГГ перестает указываеть пальцем
    AI_DropItem(self,itmi_sleepsack);//ГГ выбрасывает шкуру
    AI_PlayAni(self,"T_PLUNDER");//анимация сна (1)
    AI_PlayAni(self,"T_STAND_2_SLEEPGROUND");//анимация сна (2)
    sleepabit_s1();//запуск мобси-диалога
};

Если шкура должна быть просто вместо кровати, то можно кровати поменять визуал в Спейсере.
 

_ZEN_

Участник форума
Регистрация
9 Фев 2010
Сообщения
45
Благодарности
3
Баллы
170
Спасибо, Мільтен, попробую сделать, как в Диккурике.
Если поменять визуал кровати на шкурку, то, мне кажется, что ГГ будет спать над шкуркой, так как кровать выше её. У меня, почему-то, ГГ спит на самом краю кровати.
И ещё, в Диккурике вроде бы была руна телепортации на другую руну, которую можно было бросить, где угодно. Вообще-то телепортация жестко связана с вейпоинтом. Каким образом это было сделано?
P.S.
Cамому пока нет возможности «поковырять» Диккурик. Почему-то Спейсер 2 не открывает его ZEN.
 

Мільтен

Участник форума
Регистрация
27 Июн 2008
Сообщения
862
Благодарности
427
Баллы
265
Спасибо, Мільтен, попробую сделать, как в Диккурике.
Если поменять визуал кровати на шкурку, то, мне кажется, что ГГ будет спать над шкуркой, так как кровать выше её. У меня, почему-то, ГГ спит на самом краю кровати.
И ещё, в Диккурике вроде бы была руна телепортации на другую руну, которую можно было бросить, где угодно. Вообще-то телепортация жестко связана с вейпоинтом. Каким образом это было сделано?
P.S.
Cамому пока нет возможности «поковырять» Диккурик. Почему-то Спейсер 2 не открывает его ZEN.

Я не совсем понял, что ты имеешь ввиду. Я Диккурик не играл и не ковырял, я просто слышал, что там тоже есть такой прикол. Если распишешь подробней, чт там с рунами происходит, то может чего и придумаем.
На счет шкурки то да, вероятно ГГ будет висеть над ней. В так случае можно сделать следующее:
1. Ставим рядом две кровати.
2. Одной меняем визуал на шкуру и поднимаем на высоту, равную оригинальной кровати.
3. Тогда под шкуру ставим ящики как потомков шкуры(чтобы они двигались при перемещении материнской шкуры). Таким образом получаем новый моб, который потом можно будет размножить по всему миру.
 

_ZEN_

Участник форума
Регистрация
9 Фев 2010
Сообщения
45
Благодарности
3
Баллы
170
Насчёт варианта с двумя кроватями – понятно.
Что же касаемо Диккурика, то я его в разное время прошёл раза четыре. В нём были реализованы довольно интересные вещи. Одна из которых – возможность телепортироваться в любое место. В инвентаре ГГ две руны. Одну выбрасываешь там, куда потом хочешь вернуться. Вторая – всегда в инвентаре. Где бы ты не был, достаточно активировать руну возвращение в инвентаре и ты оказываешься в том месте, где выбросил первую руну. Её можно опять подобрать с земли и переложить в другое место.
Для размышления: в командах консоли есть «GOTO WAYPOINT», но также и «GOTO VOB».
 

Мільтен

Участник форума
Регистрация
27 Июн 2008
Сообщения
862
Благодарности
427
Баллы
265
Насчёт варианта с двумя кроватями – понятно.
Что же касаемо Диккурика, то я его в разное время прошёл раза четыре. В нём были реализованы довольно интересные вещи. Одна из которых – возможность телепортироваться в любое место. В инвентаре ГГ две руны. Одну выбрасываешь там, куда потом хочешь вернуться. Вторая – всегда в инвентаре. Где бы ты не был, достаточно активировать руну возвращение в инвентаре и ты оказываешься в том месте, где выбросил первую руну. Её можно опять подобрать с земли и переложить в другое место.
Для размышления: в командах консоли есть «GOTO WAYPOINT», но также и «GOTO VOB».

А также Вам в уроках описал команду:
void AI_GotoItem (c_npc self, c_item item); - НПС self перемещается к предмету item.
По-моему достаточно в функции использования руны возвращения прописать
Код:
AI_GotoItem  (hero, инстанция руны);
Лично не тестил, но по логике вещей должно работать. Можно там еще спецэффекты добавить.:)
 

Jr13San


Модостроитель
Регистрация
1 Апр 2010
Сообщения
435
Благодарности
261
Баллы
230
Есть проблемка с выводом на экран текста. Почему при вызове функции PrintScreen("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",0,20,FONT_Screen,100);
с текстом, которого даже лишку для написания строки по всей ширине экрана, текст не печатается в правой стороне экрана ровно на 1 символ. Короче, вот скриншот:
PrintScreen_01.jpg
 

_ZEN_

Участник форума
Регистрация
9 Фев 2010
Сообщения
45
Благодарности
3
Баллы
170
Буду пробовать.
 

Vitalik

Участник форума
Регистрация
30 Май 2010
Сообщения
108
Благодарности
0
Баллы
165
Объясните пожалуйста суть проблемы. Вобщем, декомпилировал я файл gothic.dat. Подкорректировал тексты в скриптах *d, затем сохранил, нажал Compile. Вроде бы после этого скрипты скопилировались в dat файл. Заменил им оригинальный файл. Захожу в игре мне опыт стал в 2 раза меньше начисляться? пример за убийство овцы получаю 5 опыта вместо 10, за убийство варга 150 опыта вместо 300, за убийство тролля 250 вместо 500..и т.д. ?*???*
 

Dimmell

Участник форума
Регистрация
23 Ноя 2008
Сообщения
2.899
Благодарности
111
Баллы
285
const int XP_PER_VICTORY = 10; - начисление экспы за уровень монстра.
В оригинальных скриптах Г2а в Constants.d
 

Vitalik

Участник форума
Регистрация
30 Май 2010
Сообщения
108
Благодарности
0
Баллы
165
2 Вапроса:
1) При декомпиляции файла GOTHIC.dat в файле PC_Hero.d есть строка
instance PC_Hero(Npc_Default)
{
name[0] = "Я";
npcType = npctype_main;
guild = GIL_None;
level = 0;
voice = 15;
и т.д - это отвечает за функцию ГГ, а остальные функции они я так понял не нужны вот: PC_Hero_L2, PC_Hero_L5...и т.д. можно их удалить оттуда?
2) Что за ошибка? "Функция должна иметь возвращение" что это значит и есть ли решение этой ошибки.
 

Зорк

Участник форума
Регистрация
29 Дек 2004
Сообщения
3.089
Благодарности
365
Баллы
405
Vitalik, на будущее тебе. Используй кнопку
post_thanks.gif
, если хочешь выразить благодарность. В следующий раз будет пред.
 

Dimmell

Участник форума
Регистрация
23 Ноя 2008
Сообщения
2.899
Благодарности
111
Баллы
285
Vitalik,
1. А поиском воспользоваться - не судьба?
Поискать, используется где-нибудь PC_Hero_L2 и т.д. Если нет - можешь удалять.
2. Значит функция должна возвращать значение. Например, return TRUE или return FALSE. А вот что она должна возвращать - надо смотреть по логике скрипта. Она может возвращать и return TANK.
 

Vitalik

Участник форума
Регистрация
30 Май 2010
Сообщения
108
Благодарности
0
Баллы
165
Функция должна возвращать значение

func int B_SetDayTolerance()
{
if(Wld_IsTime(22,0,23,59))
{
return Wld_GetDay() + 1;
}
else
{
return Wld_GetDay();
};
}; --> шо тут ставить ?*???*
 
Сверху Снизу