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

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
    Скрыть объявление
  2. Форум аддона "Возвращение" 2.0:
    — Обсудить игру, почитать о прохождениях и/или разрешить свои вопросы по игре вы можете в одной из тем одноименного форума. Посетить...
    — Прочитать историю изменения и/или скачать последнюю версию аддона "Возвращение", вы можете на страницах наших ресурсов. Скачать...
    Скрыть объявление

Agama Script tools(Расширитель возможностей скриптов и игры в целом)

Тема в разделе "Модостроение", создана пользователем Saturas, 27 янв 2015.

Модераторы: Marvіn, MEG@VOLT
  1. Saturas

    Saturas
    Модостроитель

    Регистрация:
    11 фев 2009
    Сообщения:
    1.908
    Благодарности:
    620
    Баллы:
    275
    Пол:
    Женский
    AST - новая разработка скриптового расширителя от Undead Mod Team.
    (в разработке...)
    [​IMG]


    В.Зачем это нужно и что дает?
    О. Этот пакет необходим, если вам недостаточно стандартных возможностей движка.

    В. Какие конкретно возможности добавляет AST?
    О. Добавлен ряд полезных( и не очень) скриптовых External функций, такие как:
    Открытие/закрытие сундука из скриптов, удаление предметов из сундуков через скрипты, смена уровня(ChangeLevel) из скрипта, и многое многое другое.

    В. Обязательно ли компилировать скрипты игрой, если используется AST? Тк. в Ikarus, и G2Ext была возможность компиляции только игрой, как будет у вас?
    О. Возможности компиляции скриптов будет две, первая, как обычно, игрой, вторая - вместе с релизом AST будет выпущена обновленная версия Gothic Sourcer(v3.15+) эта версия будет поддерживать импорт EXTERNAL функций из отдельного файла. Огромное спасибо комраду Vam, за то что выдал мне исходники*flowers*


    P.s. В данный момент на основе AST разрабатывается наш мод Анклав, с его помощью у нас реализована Карманная кража как в г1, обновленная система стрельбы из лука, улучшенная система магии и многое многое другое.

    P.s.[2] В обозримом будущем в Gothic Sourcer будет добавлена возможность корректной компиляции скриптового пакета Ikarus(будет опция в меню)
     
    Последнее редактирование: 18 июн 2016
  2. MEG@VOLT

    MEG@VOLT ★★★★★★★
    Модератор

    Регистрация:
    24 мар 2006
    Сообщения:
    1.754
    Благодарности:
    769
    Баллы:
    290
    Сат, первый релиз(Демо-бета версия) есть?

    Также в наверх пока идем, позже видно будет, может в лавку переедем.
     
  3. Saturas

    Saturas
    Модостроитель

    Регистрация:
    11 фев 2009
    Сообщения:
    1.908
    Благодарности:
    620
    Баллы:
    275
    Пол:
    Женский
    Есть альфа которая сейчас тестируется, тестирование закрытое.
    Сегодня-завтра освою готик сорсер, и тестеры получать свежую. версию сорсера.
     
    Yelawolf поблагодарил.
  4. enil9

    enil9 Участник форума

    Регистрация:
    25 май 2014
    Сообщения:
    56
    Благодарности:
    11
    Баллы:
    75
    Пол:
    Мужской
    Можно-ли через ASЕ получит полное имя Mob-a ? ( Npc_GetDetectedMob возвращает короткое)
    И с совместим-ли c systempack -ом ?

    И где можно посмотреть хотя-бы список новых скриптовых функций?
     
    Последнее редактирование: 29 янв 2015
  5. Saturas

    Saturas
    Модостроитель

    Регистрация:
    11 фев 2009
    Сообщения:
    1.908
    Благодарности:
    620
    Баллы:
    275
    Пол:
    Женский
    Да, можно получить имя любого визхуального объекта в фокусе, список функций выложен будет чуть чуть позже, можт даже седня вечером

    До сих пор с СП проблем не было обнаружено.
     
    enil9 поблагодарил.
  6. Vlad_Torop

    Vlad_Torop Участник форума

    Регистрация:
    2 май 2014
    Сообщения:
    635
    Благодарности:
    392
    Баллы:
    140
    Пол:
    Мужской
    Будет ли, присутствовать возможность завести диалог с Itemом,находящемся в рюкзачке?
    (Без жуков-невидимок,и прочих костылей)
     
  7. Saturas

    Saturas
    Модостроитель

    Регистрация:
    11 фев 2009
    Сообщения:
    1.908
    Благодарности:
    620
    Баллы:
    275
    Пол:
    Женский
    Да, позже будет и это
     
  8. Dimus

    Dimus ★★★★★★★
    Модератор

    Регистрация:
    19 июл 2010
    Сообщения:
    3.333
    Благодарности:
    1.888
    Баллы:
    480
    Пол:
    Мужской
    Желательно добавить в AST функцию, возвращающую название распорядка жизнедеятельности, который сейчас выполняет NPC:
    Код:
    func string Npc_GetRoutine(var C_Npc npc);
    Название не должно содержать префикс "Rtn_XXX_", например, "PreStart", "Start", "Tot" и т.д. Если у NPC нет такого расписания, то функция возвращает пустую строку. Сейчас приходится выяснять, какое расписание выполняет NPC с помощью проверки нахождения его около определённого waypoint, например:
    Открыть спойлер
    if(Npc_GetDistToWP(self,"NW_XARDAS_BANDITS_LEFT") < 500)
    Но если NPC активно перемещается по локации, то приходится проверять все waypoint, на которых он может находиться, что заметно усложняет код.
     
    Последнее редактирование: 11 мар 2015
  9. redleha

    redleha
    Модостроитель

    Регистрация:
    26 фев 2008
    Сообщения:
    697
    Благодарности:
    656
    Баллы:
    245
    Пол:
    Мужской
    А эта встроенная не канает?
    func int Npc_IsInRoutine (c_npc self, func state);

    Я ей пользовался в скриптах, но, правда, не проверял.
    if((PIRATES_HUNTERS_BATTLE == TRUE) && Npc_IsInState(self,ZS_Talk)
    && ((Npc_GetDistToWP(self,"PC_SMALLTALK_PIRATE_02") <= 3000) || Npc_IsInRoutine(self,Rtn_AttackPir_2001)))
    {
    return TRUE;
    };
     
  10. Dimus

    Dimus ★★★★★★★
    Модератор

    Регистрация:
    19 июл 2010
    Сообщения:
    3.333
    Благодарности:
    1.888
    Баллы:
    480
    Пол:
    Мужской
    Это немного другая функция, возвращающая TRUE или FALSE. В скриптах G2a я видел использование этой функции в скрипте AI\Test_Scripts\Testmodelle_Kalveram.d:
    Открыть спойлер
    Код:
    instance Info_TA_Testmodell_GuideStart(C_Info)
    {
        npc = TA_Testmodell;
        nr = 997;
        condition = DIA_TA_Testmodell_GuideStart_Condition;
        information = DIA_TA_Testmodell_GuideStart_Info;
        permanent = TRUE;
        description = "Покажи мне Guide_Player!";
    };
    
    
    func int DIA_TA_Testmodell_GuideStart_Condition()
    {
        var C_Npc Testmodell;
        Testmodell = Hlp_GetNpc(TA_Testmodell);
        if(!Npc_IsInRoutine(self,ZS_Guide_Player))
        {
            return 1;
        };
    };
    
    func void DIA_TA_Testmodell_GuideStart_Info()
    {
        AI_StopProcessInfos(self);
        Npc_ExchangeRoutine(self,"Guide");
    };
    
    
    instance Info_TA_Testmodell_GuideStart(C_Info)
    {
        npc = TA_Testmodell;
        nr = 997;
        condition = DIA_TA_Testmodell_GuideStart_Condition;
        information = DIA_TA_Testmodell_GuideStart_Info;
        permanent = TRUE;
        description = "Покажи мне Guide_Player!";
    };
    
    
    func int DIA_TA_Testmodell_GuideStart_Condition()
    {
        var C_Npc Testmodell;
        Testmodell = Hlp_GetNpc(TA_Testmodell);
        if(!Npc_IsInRoutine(self,ZS_Guide_Player))
        {
            return 1;
        };
    };
    
    func void DIA_TA_Testmodell_GuideStart_Info()
    {
        AI_StopProcessInfos(self);
        Npc_ExchangeRoutine(self,"Guide");
    };
    
    
    instance Info_TA_Testmodell_GuideEnd(C_Info)
    {
        npc = TA_Testmodell;
        nr = 998;
        condition = DIA_TA_Testmodell_GuideEnd_Condition;
        information = DIA_TA_Testmodell_GuideEnd_Info;
        permanent = TRUE;
        description = "Занончить Guide_Player!";
    };
    
    
    func int DIA_TA_Testmodell_GuideEnd_Condition()
    {
        var C_Npc Testmodell;
        Testmodell = Hlp_GetNpc(TA_Testmodell);
        if(Npc_IsInRoutine(self,ZS_Guide_Player))
        {
            return 1;
        };
    };
    
    func void DIA_TA_Testmodell_GuideEnd_Info()
    {
        AI_StopProcessInfos(self);
        Npc_ExchangeRoutine(self,"START");
    };
    
    
    instance Info_TA_Testmodell_FollowStart(C_Info)
    {
        npc = TA_Testmodell;
        nr = 995;
        condition = DIA_TA_Testmodell_FollowStart_Condition;
        information = DIA_TA_Testmodell_FollowStart_Info;
        permanent = TRUE;
        description = "Иди за мной!";
    };
    
    
    func int DIA_TA_Testmodell_FollowStart_Condition()
    {
        var C_Npc Testmodell;
        Testmodell = Hlp_GetNpc(TA_Testmodell);
        if(!Npc_IsInRoutine(self,ZS_Follow_Player))
        {
            return 1;
        };
    };
    
    func void DIA_TA_Testmodell_FollowStart_Info()
    {
        AI_StopProcessInfos(self);
        Npc_ExchangeRoutine(self,"FOLLOW");
    };
    
    
    instance Info_TA_Testmodell_FollowEnd(C_Info)
    {
        npc = TA_Testmodell;
        nr = 998;
        condition = DIA_TA_Testmodell_FollowEnd_Condition;
        information = DIA_TA_Testmodell_FollowEnd_Info;
        permanent = TRUE;
        description = "Хватит ходить за мной!";
    };
    
    
    func int DIA_TA_Testmodell_FollowEnd_Condition()
    {
        var C_Npc Testmodell;
        Testmodell = Hlp_GetNpc(TA_Testmodell);
        if(Npc_IsInRoutine(self,ZS_Follow_Player))
        {
            return 1;
        };
    };
    
    func void DIA_TA_Testmodell_FollowEnd_Info()
    {
        AI_StopProcessInfos(self);
        Npc_ExchangeRoutine(self,"START");
    };
    
     
  11. ElderGamer

    ElderGamer
    Модостроитель

    Регистрация:
    16 апр 2008
    Сообщения:
    1.553
    Благодарности:
    955
    Баллы:
    275
    Ну, при желании для нужного непися всегда можно отследить факт изменения распорядка, запоминая его в какой-нибудь переменной. В чём конкретно заключается замысел?
     
  12. Dimus

    Dimus ★★★★★★★
    Модератор

    Регистрация:
    19 июл 2010
    Сообщения:
    3.333
    Благодарности:
    1.888
    Баллы:
    480
    Пол:
    Мужской
    Неужели непонятно? Без использования костылей получить название текущего распорядка по аналогии с функциями получения waypoint:
    Код:
    func string Npc_GetNearestWP(var C_Npc npc);
    func string Npc_GetNextWP(var C_Npc npc);
     
    Последнее редактирование: 11 мар 2015
  13. Saturas

    Saturas
    Модостроитель

    Регистрация:
    11 фев 2009
    Сообщения:
    1.908
    Благодарности:
    620
    Баллы:
    275
    Пол:
    Женский
    Имя функции скриптовой вернуть не совсем легко, тк компилятор не работает с именами функций, он работает по индексам.
     
  14. redleha

    redleha
    Модостроитель

    Регистрация:
    26 фев 2008
    Сообщения:
    697
    Благодарности:
    656
    Баллы:
    245
    Пол:
    Мужской
    Ну, такая функция может быть сделана за пару минут, так что Сатурас вполне может добавить. Это 100%.
    Я такое делал на Икарусе.
    Я даже возвращал название запускаемой функции типа:

    func string XXX(){}
    И она возвращала "XXX".

    Сат, можешь глянуть в скриптах Саги. Если нет - стукни. Вообще, в Икарусе - есть пример такого.
     
  15. Saturas

    Saturas
    Модостроитель

    Регистрация:
    11 фев 2009
    Сообщения:
    1.908
    Благодарности:
    620
    Баллы:
    275
    Пол:
    Женский
    Еще раз напоминаю, что распорядки к нпс присваиваются в виде индексов, а не имен функций.
    Хотя не, это я туплю делается за минуту, да.
     
    Последнее редактирование: 11 мар 2015
    redleha поблагодарил.
  16. bullet

    bullet Участник форума

    Регистрация:
    1 дек 2008
    Сообщения:
    19
    Благодарности:
    3
    Баллы:
    165
    Пол:
    Мужской
    Saturas, меня интересует такой момент: где можно глянуть весь перечень нововведений и перспективы его дополнения? Так сказать, огласите весь список, пожалуйста )
     
  17. Saturas

    Saturas
    Модостроитель

    Регистрация:
    11 фев 2009
    Сообщения:
    1.908
    Благодарности:
    620
    Баллы:
    275
    Пол:
    Женский
    На днях огласим, сейчас активная доработка и приближение к релизу
    И да, что имелось ввиду под "перспективы дополнения" ?
     
    Последнее редактирование: 4 май 2015
  18. bullet

    bullet Участник форума

    Регистрация:
    1 дек 2008
    Сообщения:
    19
    Благодарности:
    3
    Баллы:
    165
    Пол:
    Мужской
    перспективы - это в смысле потенциал AST будет раскрыт на 100% или останется возможность дальнейшего расширения (есть задумки, вряд ли вы все их предусмотрели)
     
  19. Saturas

    Saturas
    Модостроитель

    Регистрация:
    11 фев 2009
    Сообщения:
    1.908
    Благодарности:
    620
    Баллы:
    275
    Пол:
    Женский
    Теперь понял, потенциал чтобы раскрыть на 100% нужны годы, ибо он огромен. А так будет SDK на С++ с которым можно будет что то новое добавлять
     
    bullet поблагодарил.
  20. Carnage/Mark56

    Carnage/Mark56 Участник форума

    Регистрация:
    27 дек 2014
    Сообщения:
    13
    Благодарности:
    54
    Баллы:
    55
    Пол:
    Мужской
    Hello, I am really impressed. I only want to ask if there is going to be implemented forced animation synchronization. To make things like Handshakes, in game cutscenes, assassination, killing blows.
    (Sory but I don't speak russian, and could not find any english thread)
    google translate:
    Здравствуйте, я действительно впечатлен. Я только хочу спросить, если там будет реализована принудительной синхронизации анимации. Для того, чтобы такие вещи, как рукопожатий, в игровых роликов, убийства, убийства удары.
     
Модераторы: Marvіn, MEG@VOLT

Поделиться этой страницей