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

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

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

MaGoth

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

Вложения

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

alexeich2019

Участник форума
Регистрация
28 Июн 2019
Сообщения
191
Благодарности
73
Баллы
175
Gratt,
C++:
var int inst;
inst = Hlp_GetInstanceID(ItLsFireTorch);

kiss_18kb.1587821559[1].jpg
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
alexeich2019, я не понимаю, а зачем, если в мире нет инстанции? Вернее даже не так. Зачем выполнять код, если функция возвращает -1?
 

alexeich2019

Участник форума
Регистрация
28 Июн 2019
Сообщения
191
Благодарности
73
Баллы
175
Gratt, ок, углубимся в предысторию. Недавно вышел модифицированный Sourcer, где можно экстерналы добавлять нормально. Перевели экстерналы в новый формат.

void Ext_PutInSlot(instance,string,int); -> func void Ext_PutInSlot(var C_NPC npc, var string slot, var int weapon);

Заменили экстернал?
Отлично, начинаем компилить код, соурсер нам сообщает, "нельзя преобразовать тип instance в int".

Сама суть в том, что мы забираем у игрока один итем и кладем другой итем в слот. Этого другого итема, соответственно, в мире нет.

kiss_48kb.1587822188[1].jpg

Вот я и попробовал перевести instance в int, с помощью Hlp_GetInstanceID.
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
alexeich2019, во внешке поставь instance 3м аргументом
 

alexeich2019

Участник форума
Регистрация
28 Июн 2019
Сообщения
191
Благодарности
73
Баллы
175
Gratt, а с новым соурсером все норм? Ну, в том плане, что он стал выдавать ошибку на то, что вместо int кидаешь instance? Хотя те же старые внешки он обрабатывает нормально.

kiss_13kb.1587823560[1].jpg
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
С новым как раз таки все норм. В синтаксисе детала такой аргумент должен иметь вид var func, а не int
ЗЫ пардон, показалось ты функцию передаешь, но суть ответа та же - сверяй передаваемые типы. В GS 3.15 они неправильные изначально...
 

jeraqiv

Участник форума
Регистрация
31 Май 2016
Сообщения
36
Благодарности
2
Баллы
155
В готике поиск пути по WayPoint'ам формируется в реальном времени? Или может быть при загрузке игры всё заносится в большой массив, от куда и выбираются нужные пути.
 

MEG@VOLT

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

jeraqiv

Участник форума
Регистрация
31 Май 2016
Сообщения
36
Благодарности
2
Баллы
155
jeraqiv, имеешь ввиду как себя неписи ведут?

Нет. Я про построение пути от точки (x,y,z) до точки (10, 20, 10) [x, y, z] - любое. Конечно возможно там используется алгоритм Дейкстры, но меня интересует производительность..

Просто я для GMP пробую это придумать, но там поиск пути очень долго работает.. При создании сервера создается граф, по которому в нужное время ищется путь.. Но путь ищется не очень быстро.. Поэтому мне интересно было узнать как это реализовано в самой игре, где не видно такой задержки.
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.124
Благодарности
5.622
Баллы
910
Нет. Я про построение пути от точки (x,y,z) до точки (10, 20, 10) [x, y, z] - любое. Конечно возможно там используется алгоритм Дейкстры, но меня интересует производительность..

Просто я для GMP пробую это придумать, но там поиск пути очень долго работает.. При создании сервера создается граф, по которому в нужное время ищется путь.. Но путь ищется не очень быстро.. Поэтому мне интересно было узнать как это реализовано в самой игре, где не видно такой задержки.
Я где-то выше (давно) спрашивал, поиск пути работает по алгоритму поиска по кратчайшему пути (масло масленное)
В игре в любом место можно вставить НПС, который если имеет в этом месте WP указанные в его рутине, то он пойдет к ним по самому короткому пути -> в реальном времени происходит обработка
 

jeraqiv

Участник форума
Регистрация
31 Май 2016
Сообщения
36
Благодарности
2
Баллы
155
Понятно.
 
Последнее редактирование:

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.301
Благодарности
4.636
Баллы
625
По такой логике любой алгоритм можно считать выполняемым в реальном времени. Если быть точным, поиск пути выполняется один раз на запрос перемещения из А в Б, после чего результат хранится на всем времени выполнения этого ИИ события. На все это уходит настолько мало времени, что с этой задачей легко справится даже холодильник ЗИЛ.
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
С новым как раз таки все норм. В синтаксисе детала такой аргумент должен иметь вид var func, а не int
ЗЫ пардон, показалось ты функцию передаешь, но суть ответа та же - сверяй передаваемые типы. В GS 3.15 они неправильные изначально...
я что то не совсем понял, int == instance на всех уровнях, о каком ваще сорсере речь?
 

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.183
Благодарности
2.880
Баллы
420
Сделал типа новое заклинание на резервном слоте массива заклинаний. Идентично огненному шару, но с бОльшим уроном. Все работает, как мне нужно за исключением одной вещи: не работают коллизии. Т.е. шар пролетает сквозь стенки уровня. Почему не работает, если коллизии определены вроде как в PFX, а мой скрипт заклинания как раз использует начинку, идентичную у огненному шару?
Может так быть, что для резервных заклинаний это отключено в движке?
Платформа Готика 1.
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.124
Благодарности
5.622
Баллы
910
Сделал типа новое заклинание на резервном слоте массива заклинаний. Идентично огненному шару, но с бОльшим уроном. Все работает, как мне нужно за исключением одной вещи: не работают коллизии. Т.е. шар пролетает сквозь стенки уровня. Почему не работает, если коллизии определены вроде как в PFX, а мой скрипт заклинания как раз использует начинку, идентичную у огненному шару?
Может так быть, что для резервных заклинаний это отключено в движке?
Платформа Готика 1.
Попробуй сделать инстанции PFX с другим именем для этого заклинания (Аналогичные огненному шару). У меня была проблема другого характера, 5 заклинаний имеют 5 разных уровней. Использовали они все один и тот же PFX, урон разный, но на деле урон был от самого первого уровня. Решилось созданием всем заклинаниям свои инстанции PFX.
По магии знаю, что число заклов ограничено движком+ состояния которые вызывают заклинания тоже жестко ограничены движком
Пост про то, что состояния жестко ограничены движком
 

alex_draven


Модостроитель
Регистрация
13 Сен 2007
Сообщения
2.183
Благодарности
2.880
Баллы
420
Попробовал. Работает всё, если стрелять по живой цели (и до того работало). Коллизии со статикой игрового мира не работают, несмотря на свои блоки PFX. Шары летят без преград в никуда. Я использовал слот, где было некое подобие кулака ветра, но в игре не использовалось. Возможно, внутри движка Готики 1 каждый элемент массива прописан отдельно для коллизий (ВКЛ/ВЫКЛ). Надо тех, кто в двиг лазил. Других концов я просто не вижу.
Число заклов ограничено размером массива заклинаний. Это видно не вооруженным глазом в скриптах.
 

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
Привет всем.
Меня тут немножко озадачили.
Как проиграть анимацию для PC при загрузке новой игры.
Npc_PlayAni и AI_PlayAni не работают. Они работают только с ИИ, либо в контексте диалога или использования какого-то предмета.
Может кто подскажет?

Интересует решение в рамках классического модостроения.
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
РС - это?
 
Сверху Снизу