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

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

Не стесняюсь спросить....

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.124
Благодарности
5.622
Баллы
910
N1kX, блин, все равно не выходит. Как понимаю, что бы это сработало, нужно прописать какое-нибудь условие - попробовал так, что бы заработало после разговора с диего, но все равно не получается. что я делаю не так? может, упустил чего?

var int CubePuted;
var int StatuePuted;
func void PutCube ()
{

if(Npc_KnowsInfo(hero,INFO_DIEGO_GAMESTART))
{

CubePuted = hlp_random (9)+1;
var string CubePlace;
CubePlace = "CUBE_";
CubePlace = ConcatStrings(CubePlace,inttostring(CubePuted));
Wld_InsertItem (crw_armor, CubePlace);

StatuePuted = hlp_random (9)+1;
var string StatuePlace;
StatuePlace = "CUBE_";
StatuePlace = ConcatStrings(StatuePlace,inttostring(StatuePuted));
Wld_InsertItem (crw_armor, StatuePlace);

if (CubePuted == 0) { Wld_InsertItem (crw_armor, "blade"); }else
if (CubePuted == 1) { Wld_InsertItem (crw_armor, "cord"); }else
if (CubePuted == 2) { Wld_InsertItem (crw_armor, "lee"); }else
if (CubePuted == 3) { Wld_InsertItem (crw_armor, "cavalorn"); }else
if (CubePuted == 4) { Wld_InsertItem (crw_armor, "fisk"); }else
if (CubePuted == 5) { Wld_InsertItem (crw_armor, "drax"); }else
if (CubePuted == 6) { Wld_InsertItem (crw_armor, "drak"); }else
if (CubePuted == 7) { Wld_InsertItem (crw_armor, "sly"); };

CubePuted = 999;
};
};
Для начала все повторять бессмыслено. Это лишнее. Удалить
if (CubePuted == 0) { Wld_InsertItem (crw_armor, "blade"); }else
if (CubePuted == 1) { Wld_InsertItem (crw_armor, "cord"); }else
if (CubePuted == 2) { Wld_InsertItem (crw_armor, "lee"); }else
if (CubePuted == 3) { Wld_InsertItem (crw_armor, "cavalorn"); }else
if (CubePuted == 4) { Wld_InsertItem (crw_armor, "fisk"); }else
if (CubePuted == 5) { Wld_InsertItem (crw_armor, "drax"); }else
if (CubePuted == 6) { Wld_InsertItem (crw_armor, "drak"); }else
if (CubePuted == 7) { Wld_InsertItem (crw_armor, "sly"); };
Удалить
CubePuted = 999;

Daedalus:
var int CubePuted;
var int StatuePuted;
func void PutCube ()
{
    CubePuted = hlp_random (9)+1;
    var string CubePlace;
    CubePlace    =    "CUBE_";
    CubePlace    =    ConcatStrings(CubePlace,inttostring(CubePuted));
    Wld_InsertItem (crw_armor, CubePlace);
    StatuePuted = hlp_random (9)+1;
    var string StatuePlace;
    StatuePlace    =    "CUBE_";
    StatuePlace    =    ConcatStrings(StatuePlace,inttostring(StatuePuted));
    Wld_InsertItem (crw_armor, StatuePlace);
};
В самом диалоге INFO_DIEGO_GAMESTART вызывай функцию
Daedalus:
PutCube();
 

Scarecrow

Участник форума
Регистрация
11 Авг 2014
Сообщения
162
Благодарности
85
Баллы
220
N1kX, ага, хорошо, спасибо большое! Но как же игра тогда поймет, на каком месте создавать предмет? фрипоинты с именами cube_1, cube_2, cube_3 создал, но на них после разговора с диего ничего не появляется.
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.124
Благодарности
5.622
Баллы
910
CubePuted = hlp_random (9)+1;
У переменной будет рандомное число от 0 до 9 (+1), значит тебе надо уменьшить до 3-х
CubePuted = hlp_random (2)+1;
Потом. Если выпало CUBE_4, а у тебя нет такой точки и нет -> вставки предмета тоже нет.
Мир должен быть в моде. Все тесты с новой игрой.

Запускай для тестов с zSpy, вопросов будет меньше, тем более я создал тему, где все расписано.

И да, если ты собрался вставлять только 1 предмет, то код ещё уменьшай и называй правильно
Daedalus:
var int ArmorPuted;
func void PutArmor()
{
    ArmorPuted= hlp_random (2)+1;
    var string ArmorPlace;
    ArmorPlace=    "CUBE_";
    ArmorPlace=    ConcatStrings(ArmorPlace,inttostring(ArmorPuted));
    Wld_InsertItem (crw_armor, ArmorPlace);
};
 
Последнее редактирование:

Scarecrow

Участник форума
Регистрация
11 Авг 2014
Сообщения
162
Благодарности
85
Баллы
220
N1kX, да, все отлично! заработало наконец) благодарю за помощь!
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.124
Благодарности
5.622
Баллы
910
KirTheSeeker, файлы внутри VDF всегда в приоритете.
Можешь потыкать в мод стартере на этот флажок, тогда движок будет вначале искать файлы в игровых каталогах.
Посмотреть вложение 86811
Довольно странно, хотя есть же файл, который регулирует порядок очереди откуда подтягивать ресурсы
VDFS.CFG
[VDFS]
Data\*.vdf
Data\*.mod
[END]
А вообще, за время модоломаний, которое я провел выяснил следующее:
Чтобы ресурсы для Spacer подтягивались правильные, надо распаковать полностью мод, разложить по папкам файлы - модели/анимсы/скрипты/текстуры, выключить оригинальные миры, если в моде они есть
Также если есть два одинаковых ресурса (текстура, модель, анимация) подтягивания по последней дате
Тоже самое относится к скриптам - если в запускаемом моде скрипты имеют дату < скриптов в _work\data\scripts\_compiled то будут использоваться они
Если хотим переключится на другой мод, то нужную папку просто переименовываем, например
\_work\data\TEXTURES\_compiled в \_work\data\TEXTURES\_compiledPredo и копируем текстуры из другого мода - проверено - брать ресурсы из переименованной папки не будет движок
В папке _work\data ресурсы берутся в последнюю очередь - если больше нигде движок не может их найти, если это текстура - использует default, в остальных случаях - вылет.
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
Довольно странно, хотя есть же файл, который регулирует порядок очереди откуда подтягивать ресурсы
Файл конфигурации и дапмы не используются актуальной файловой системой за их полной ненадобностью.
Есть всего несколько важных столпов, на которых строилась новая VDFS:
1. Папка Data парсится на предмет .vdf и .mod файлов, остальное летит в помойку.
2. Временны́е метки используются при построении файловой хеш-таблицы. Система держит в памяти только самую актуальную копию виртуального файла, остальные скипает.
3. Иногда движок совершает запрос к файловой системе показать ему путь до того или иного файла. В ответ система выдает список возможных путей на выбор.
4. Если файловая система не находит файл ни в виртуальных, ни в физических каталогах, то запрос переадресовывается к ОС. И при наличии файла система догружает такой файл в свою хеш-таблицу.
5. Выбор между виртуальным и физическим файлами производится тремя флагами файловой системы:
  А. VDF_VIRTUAL - разрешает виртуальной системе искать файл внутри томов. Обычно этот флаг по умолчанию приоритетный.
  Б. VDF_PHYSICAL - разрешает виртуальной файловой системе искать файл в физических каталогах игры. По умолчанию этот флаг второстепенный.
  В. VDF_PHYSICALFIRST - вынуждает файловую систему искать вначале в физических каталогах, и только после - в виртуальных. Именно этот флаг подставляется движком, если выставляется галка `Вначале физический VDFS` в мод стартере.

З.Ы. И да, физически парсятся только папки _work, system и saves, остальное системе не интересно.

Чтобы ресурсы для Spacer подтягивались правильные, надо распаковать полностью мод, разложить по папкам файлы - модели/анимсы/скрипты/текстуры, выключить оригинальные миры, если в моде они есть
И это правильно, так как ты можешь регулировать только флаг VDF_PHYSICALFIRST. Это означает, что никто не застрахован от попадания нежелательного контента из виртуальных каталогов. При разработке мода все VDF тома должны быть отключены.
 
Последнее редактирование:

MaGoth

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

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
KirTheSeeker, По многим причинам, включая и эту, ставят фулверсию ГДМК. Поставь ее всетаки и не парь себе мозг))
 

KirTheSeeker

Участник форума
Регистрация
18 Авг 2017
Сообщения
1.928
Благодарности
557
Баллы
275
Поставь ее всетаки и не парь себе мозг))
Я трижды переустанавливал игру, чтобы просто открыть Spacer. Это затем, чтобы удалить 2 бочки, нажать Save ZEN, и словить вылет программы. Да, я читал уроки, но простого пошагового туториала НЕ нашлось. Мне надоели эти программные сношения.
Готика не заточена под простой, быстрый и интуитивно понятный моддинг для рядовых пользователей ПК. Надо было понять это сразу и не парить себе мозг.
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
Я трижды переустанавливал игру, чтобы просто открыть Spacer. Это затем, чтобы удалить 2 бочки, нажать Save ZEN, и словить вылет программы. Да, я читал уроки, но простого пошагового туториала НЕ нашлось. Мне надоели эти программные сношения.
Готика не заточена под простой, быстрый и интуитивно понятный моддинг для рядовых пользователей ПК. Надо было понять это сразу и не парить себе мозг.
ну почему?
На Windows XP прекрасно все работает))
Ну а чтобы на 10 все нормально работало, ну по крайней мере с меньшими вылтами и глюками.
3 приложеиня с запуском от имени админа+совемстимость от Windows XP во вложении
+ первое сообщение тут: https://worldofplayers.ru/threads/12168/
 

Вложения

  • System.zip
    6,4 MB · Просмотры: 6

Dr.Horatio

Участник форума
Регистрация
26 Мар 2017
Сообщения
61
Благодарности
49
Баллы
180
Господа и дамы, возникла необходимость ограничить игроку возможность бегать. Чтобы он временно мог только ходить, как на зажатом шифте. Готика 1.
Есть идеи, как это можно реализовать?
 

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.183
Благодарности
2.880
Баллы
420
Создать и применить оверлей анимации, где в качестве анимации s_runL будет выступать анимация s_walkL.

Код примерно такой:
aniAlias ("t_Run_2_RunL" 1 "s_RunL" 0.0 0.0 M. "t_Walk_2_WalkL" F)
aniAlias ("s_RunL" 1 "s_RunL" 0.0 0.0 M. "s_WalkL" F)
aniBlend ("t_RunL_2_Run" "s_Run" 0.2 0.2)
aniBlend ("t_RunR_2_Run" "s_Run" 0.2 0.2)
 

Dr.Horatio

Участник форума
Регистрация
26 Мар 2017
Сообщения
61
Благодарности
49
Баллы
180
Создать и применить оверлей анимации, где в качестве анимации s_runL будет выступать анимация s_walkL.

Спасибо за совет! Я воспользовался, и получилось. Однако код мне пришлось написать другой:
ani ("s_Run" 1 "s_Run" 0.1 0.1 M "Hum_WalkAmbient_A01.asc" F 1 49 FPS:10)
ani ("t_Run_2_RunL" 1 "s_RunL" 0.0 0.0 M. "Hum_WalkLoop_A02.asc" F 1 9)
ani ("s_RunL" 1 "s_RunL" 0.0 0.1 M. "Hum_WalkLoop_A02.asc" F 10 33)
{
*eventSFXGrnd (12 "Run")
*eventSFXGrnd (21 "Run")
}

ani ("t_RunL_2_Run" 1 "s_Run" 0.0 0.0 M. "Hum_WalkLoop_A02.asc" F 34 39)
aniBlend ("t_RunR_2_Run" "s_Run" 0.2 0.2)

ani ("t_JumpB" 1 "s_Run" 0.0 0.2 M. "Hum_JumpB_M01.asc" F 1 14)
{
*eventSFXGrnd (6 "Run")
*eventSFXGrnd (9 "Run")
}

И само собой взять все компилированные анимации и переименовать подобающим способов. В целом, результатом доволен. Еще раз спасибо!
 

Trazege

Участник форума
Регистрация
20 Фев 2008
Сообщения
1.760
Благодарности
1.394
Баллы
340
Я трижды переустанавливал игру, чтобы просто открыть Spacer. Это затем, чтобы удалить 2 бочки, нажать Save ZEN, и словить вылет программы. Да, я читал уроки, но простого пошагового туториала НЕ нашлось. Мне надоели эти программные сношения.
Готика не заточена под простой, быстрый и интуитивно понятный моддинг для рядовых пользователей ПК. Надо было понять это сразу и не парить себе мозг.

Для г1 или для г2? 10 разве дружит со спейсером?
 

KirTheSeeker

Участник форума
Регистрация
18 Авг 2017
Сообщения
1.928
Благодарности
557
Баллы
275

Trazege

Участник форума
Регистрация
20 Фев 2008
Сообщения
1.760
Благодарности
1.394
Баллы
340
Для Г2НВ.
Не знаю с чем дружит Spacer. Знаю, что Готика не особо дружит с "простыми смертными пользователями".

Очень странно. А скрин ошибки есть? Есть спейсер от Ликера. Он не должен вылетать. И для новичков он удобнее.
 

KirTheSeeker

Участник форума
Регистрация
18 Авг 2017
Сообщения
1.928
Благодарности
557
Баллы
275
Очень странно. А скрин ошибки есть? Есть спейсер от Ликера. Он не должен вылетать. И для новичков он удобнее.
Увы, окошко zSpy закрылось следом, а так я бы с удовольствием и надеждой предоставил скрин. И на данный момент эти "танцы" мне уже осточертели.
Я говорю здесь про Union Spacer.
 

Trazege

Участник форума
Регистрация
20 Фев 2008
Сообщения
1.760
Благодарности
1.394
Баллы
340
Увы, окошко zSpy закрылось следом, а так я бы с удовольствием и надеждой предоставил скрин. И на данный момент эти "танцы" мне уже осточертели.
Я говорю здесь про Union Spacer.

Об этом мало что знаю. Чем обычный спейсер не угодил?
 
Сверху Снизу