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

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

Готика 2: НВ Externals

Статус
В этой теме нельзя размещать новые ответы.

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.332
Баллы
315
  • Первое сообщение
  • #1
Предыстория:
Дело было вечером, делать было нечего
Конец предыстории:D
Давно уже хотел сделать библиотеку, с новыми скриптовыми функциями для готики 2, но в силу лени, отсутствия нормального екста, не мог все это сделать, но теперь некоторые вещи изменились, у меня появилось время и нормальный екст, грубо говоря под словом нормальный, имеется в виду совсем другой екст, не тот что был в саге, и не тот что по первому запросу в гугле, исходники пока давать не буду, ибо там много наработок вама(привет Исходники готики;) а вот готовое расширение функционала готы есть.
И так поехали*flowers*


Немного переработанная функция, одевания предметов
функция именно ОДЕВАЕТ броню/шлемы/оружие/и тд
а не просто меняет флаг, как аналогичная функция готы
по этой самой причине, не одевались головные убры(шлема) с помощью скрипта
usage:
npc - нпс который одевает предмет
itm - сам предмет
Ext_EquipItem(C_NPC npc,C_ITEM itm);
//**********************************
вставить предмет в слот
usage:
npc - нпс который одевает предмет
slot - имя слота(ZS_LEFTHAND, ZS_RIGHTHAND, и тд)
item - предмет/нпс которого вставляем в слот(да, нпс тожеможно вставить в слот
но не сейчас, пока эта возможность отключена)
Ext_PutInSlot(C_NPC npc, string slot, C_ITEM item);
//**********************************
Объявить игроком
usage:
npc - нпс которого нужно сделать игроком
Ext_SetAsPlayer(C_NPC npc);
//**********************************
Закрыть сундук name
name - имя сундука в мире
state - состояние закрыт открыт(TRUE/FALSE)
Ext_SetLocked(string name,int state);
//**********************************
задать инстанцию ключа для сундука(двери) name
name - имя сундука(двери) в мире
inst - имя инстации предмета (прим: "itmi_lockpick")
Ext_SetKeyInstance(string name,string inst);
//**********************************
Задать комбинацию замка
name - имя сундука(двери) в мире
combo - комбинация в виде "LRLR" где L - лево R - право
Ext_SetPickLockStr(string name,string combo)
//**********************************
Получить время с момента запуска игры(в ms)
Ext_GetTimerTick() возвращает значение int
//**********************************
Сохранить игру
Сохраняет игру в slot от 1 до 20
Ext_WriteSaveGame(int slot)
//**********************************
Загрузить игру
Загружает игру из слота от 1 до 20
Ext_ReadSaveGame(int slot)
//**********************************
вспомогательная функция.
позволяет включать Тест режим, отображение часов,
а также убирать все эелементы GUI
int Hlp_Otions(var int desctop,var int clock,var int testmode);
//**********************************
Функция перехоад между уровнями
targetpoint - точка появления гг в другом мире
levelname - имя мира
Ext_ChangeLevel(string targetpoint,string levelname)
//**********************************
функция печати цветного текста
все в принципе так же как и в обычном PrintScreen
только добавилось еще 3 параметра
r - красный цвет
g - синий цвет
b - зеленый цвет
PRINTTEXT ( VAR STRING text, VAR INT x, VAR INT y, VAR STRING font, VAR INT time, VAR INT r, VAR INT g, VAR INT b )

Также в код вшита одна "Циклическая" функция Global_cycle достаточно, просто создать, функцию с именем Global_cycle и во время игры, эта функция будет непрерывно вызываться, из глобального цикла oCGame::Render()
Так же, для нее есть вспомогательная функция Ext_GetTimerTick() пример использования 2х функций сейчас я вам покажу:
Код:
//В этом примере, мы используем внутриигровой таймер,
//совместно с глобальным циклом
//переменная таймера
var int timer;

func void InitVariables()
{
	//инициализируем переменную на всякий случай
	timer = 0;
}

func void Global_cycle()
{
	timer += Ext_GetTimerTick();
	//по прошествии 10 секунд, выводим текст на экран
	//и обнуляем таймер
	if(timer >= 10000)
	{
		timer = 0;
		Print("Прошло 10 секунд!");
	};
};
Или пример как отключить злополучный МАРВИН!;D
func void Global_cycle()
{
//вешаем на цикл эту функцию, и она будет при каждом вызове отключать марвин если тот был включен)
	Hlp_Otions(1,0,0);
};

И вот еще чуть не забыл, для того чтобы запустить игру с этими функциями, и тд
Нужно распаковать содержимое архива External.7z в папку с игрой(Gothic2\Externals)
Для запуска используем файл Start.bat (он запустит игру в оконном режиме!), если же вам нужно запустить игру в полный екран, запускать с файла - Inject.exe
Для компиляции скриптов, нужно использовать саму игру, с ключем -zreparse
а проще, запустить с файла Start_Compile.bat, немного его подредактировав, что конкретно редактировать показано ниже:
Код:
Inject.exe 0 -zwindow -zreparse -game:mod.ini
на место mod.ini дописать ини файл Вашего мода, при этом все *.mod файлы из вашего ini файла будут пропущены!
Чтобы добавить мод файл нужно дописать его в ExternalModList.cfg
Пример:
[FILES]
VDF=MyMod.mod MyMod2.mod
Для компиляции скриптов игрой, нужно поместить все ваши скрипты, в папки игры где должны лежать исходники скриптов:
_work\Data\Scripts\Content - в эту папку идут скрипты gothic.src и fight.src со всеми скриптами
_work\Data\Scripts\System - в эту папку идут скрипты, музыки и прочего
А вообще, советую Вам установить г2мдк со скриптами, и тогда все будет лежать на своих местах, ваша задача будет только заменить скрипты игры в папке Content которые относятся к gothic.src
Когда все сделанно, запускаем игру с файла Start_Compile.bat и скрипты будут автоматически собраны, и распиханы по своим папкам, для компиляции ou.bin - воспользуйтесь спейсером, либо скомпильте Ваш проект в готик сорсере как делаю я, хотя спейсером тоже можно.
Врроде все, удачи в новых начинаниях!

И вот еще, огромная благодарность за код Инжектора, Анониму с форума ехе лаб*flowers*
 

Вложения

  • External.zip
    131 KB · Просмотры: 311

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.332
Баллы
315
Чтото я не вижу ответа на поставленный выше вопрос, странно.
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.332
Баллы
315
Так, кто может объяснить зачем нужны эти флаги у триггеров, и тд
Код:
		BYTE reactToOnTrigger: 1;
		BYTE reactToOnTouch  : 1;
		BYTE reactToOnDamage : 1;

		BYTE respondToObject : 1;
		BYTE respondToPC     : 1;
		BYTE respondToNPC    : 1;
Ну первые 3 понятны, а зачем остальные 3? Их ктото юзает?
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.371
Благодарности
7.800
Баллы
995
Saturas, Реакция/или возврат функции триггера на/от - Объекта, Игрока, Непеся. Юзать может кто угодно, все зависит от того для чего создан триггер...
Думаю так, хз, триггерную хрень в большинстве своем не юзаю, ибо не люблю все это костылявое уг... :)
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.332
Баллы
315
Кароче пусть будут, перенесу все параметры которые висят в спейсере, и все
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.371
Благодарности
7.800
Баллы
995
Saturas, Именно. :)
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.332
Баллы
315
А там хай сам каждый решает, мое дело зопилить
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.332
Баллы
315
АХТУНГ!
На данный момент накопилось море материала для тестинга, тк у меня времени тестить банально нету, мне нужен скриптер, со знанием дела, для тестинга объекта oCTriggerScript и всех объектов дочерних от класса oCMOB, кто хочет помочь писать тут.

ЗЫ под словом со знанием дела, имеется в виду то что человек знает с чем ему предстоит работать(или догадывается) а также знает на хорошем уровне скрипты готы.​
 

Midlight

Участник форума
Регистрация
8 Июн 2011
Сообщения
155
Благодарности
1
Баллы
185
Saturas, оке, затестю вставку вобов, мобов и триггер-скрипта :)
 

Dimmell

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

ЗЫ.А то "Сообщество модмейкеров" все больше смахивает на сборище старых евреев... :D
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.371
Благодарности
7.800
Баллы
995
Dimmell,
ЗЫ.А то "Сообщество модмейкеров" все больше смахивает на сборище старых евреев...
Не, не перегибай. Если оно тебе кажется таковым, то таким его сделали вы сами, ты, и тебе подобные. *flowers*
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.332
Баллы
315
Saturas,
Продублирую вопрос-просьбу здесь:
раз уж пошла такая пьянка (в соседней теме) не мог бы ты сделать компилятор для этого пакета?
Я бы с очень большой вероятностью использовал твои инжекторные наработки, но Готики у меня нет (и ставить ее некуда), с Соурсером я и так работаю, надо только инструмент для компиляции с этим инжектором.
Я понимаю что делать с нуля - работы много, но было бы очень неплохо заиметь еще одну толковую утилиту. :)

ЗЫ.А то "Сообщество модмейкеров" все больше смахивает на сборище старых евреев... :D
Ты предлогаешь, написать парсер скриптов готы с 0? ЛОЛ, я бы давно его написал, будь это так просто, а ковырять код 4х летней давности, мне лениво, да и екст пакет нафик никому не нужен, это мое мнение.
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.332
Баллы
315
И да, тема исчерпала себя, ее можно прикрыть к чертям, ибо не актуально, один фиг никто не будет юзать их.
 

Dimmell

Участник форума
Регистрация
23 Ноя 2008
Сообщения
2.899
Благодарности
111
Баллы
285
Saturas,
один фиг никто не будет юзать их.
я бы юзал. Но при наличии отдельного компилятора.
На моем 160Гб венике держать Готику (10-14Гб) только ради компиляции пару раз в месяц - непозволительная роскошь. Мне хватает того, что папка с Соурсером весит 1,5 Гб... Тоже ооочень нужная мне... Пару раз в месяц... :D
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.371
Благодарности
7.800
Баллы
995
Saturas, А смысл было открывать ?

Dimmell, Ты же вроде как ушел из модостроения на "Готу", тебе-то на кой оно теперь?
Или ты, как тот - "старый армян", всегда прощаешся, но никогда не уходишь ?! :D
 

Midlight

Участник форума
Регистрация
8 Июн 2011
Сообщения
155
Благодарности
1
Баллы
185
Saturas, ну так-то да, готическое сообщество разваливается потихоньку... :(
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.332
Баллы
315
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу