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

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
    Скрыть объявление
  2. Внимание!
    — Требуется примерно по 3-5 человек на каждую из версий ОС:: - Windows® XP SP3, Windows® Vista SP2, Windows® 7 SP1, Windows® 8, Windows® 8.1, Windows® 10(build 10 1607) и Windows® 10(build 10 1703). Для стационарных ПК и ноутбуков. Заявку на участие можно оставить здесь...
    Скрыть объявление

Для чайников

Тема в разделе "Модостроение", создана пользователем Olhado, 15 июн 2007.

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

    kor.angar Участник форума

    Регистрация:
    28 ноя 2017
    Сообщения:
    89
    Благодарности:
    20
    Баллы:
    30
    Пол:
    Мужской
    отлично! А как теперь это зациклить? а то при повторном заходе уже нет реакции :)
     
  2. WoOliN

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

    Регистрация:
    13 окт 2012
    Сообщения:
    78
    Благодарности:
    19
    Баллы:
    175
    permanent = FALSE; изменить на permanent = TRUE;
     
  3. kor.angar

    kor.angar Участник форума

    Регистрация:
    28 ноя 2017
    Сообщения:
    89
    Благодарности:
    20
    Баллы:
    30
    Пол:
    Мужской
    теперь Диего пытается вернуть себе свой меч. И снова и снова :)

    Но вот с Кор Ангаром возник затык. Диалог появляется и меч он достаёт, а потом просто замирает
    Открыть спойлер
    Код (Text):


    instance DIA_AngarDJG_ItMw(C_Info)
    {
        npc = DJG_705_Angar;
        nr = 1 ; //важность,т.е в где будет стоять строка в начале в конце в середине.
        condition = DIA_AngarDJG_ItMw_Condition;
        information = DIA_AngarDJG_ItMw_Info;
        permanent = TRUE;
        important = TRUE; //если false то диалог начинаете вы,если TRUE нпс начинает разговор с вами!
    };

    func int DIA_AngarDJG_ItMw_Condition()
    {
    var C_Item EquipWeap;
    EquipWeap = Npc_GetEquippedMeleeWeapon(hero);
    if (Hlp_IsItem(EquipWeap,ItMw_Roter_Wind) == TRUE)

    {
    return TRUE;
    };

    };

    func void DIA_AngarDJG_ItMw_Info()
    {
    AI_Output(self,other,"DIA_Addon_Xardas_Hello_14_00"); // У тебя мое оружие, отдавай
    AI_StopProcessInfos(self);
    B_Attack(self,other,AR_NONE,1);
    };
     
    Открыть спойлер

    [​IMG]




     
  4. Vlad_Torop

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

    Регистрация:
    2 май 2014
    Сообщения:
    733
    Благодарности:
    469
    Баллы:
    180
    Пол:
    Мужской
    Попробовал сейчас на своем кор Тестере,возник такой же затык.Проверил его инстанцию,отсутствовала строчка fight_tactic = ...Прописал ее,и тестер напал.Ты в инстанции своего ангара ничего не менял?
     
    kor.angar поблагодарил.
  5. kor.angar

    kor.angar Участник форума

    Регистрация:
    28 ноя 2017
    Сообщения:
    89
    Благодарности:
    20
    Баллы:
    30
    Пол:
    Мужской
    убирал fight_tactic = как раз на Ангаре и разбирался с навыком владения оружием. вот кстати как оно устанавливается
    Открыть спойлер

    Npc_SetTalentSkill(self,NPC_TALENT_1H,1); // навык 0,1,2
    HitChance [NPC_TALENT_1H] = 100; //Владение Одноручником
    Npc_SetTalentSkill(self,NPC_TALENT_2H,2); // навык 0,1,2
    HitChance [NPC_TALENT_2H] = 100; //Владение Двуручником


    вообщем всё хорошо, что хорошо кончается. разобрались таки мы с этим делом. Теперь криминальные авторитеты не позволят себя дурачить на ровном месте :)
    Открыть спойлер

    конечно есть ещё над чем подумать, но принципиально с вопросом разобрались. Огромное спасибо!
     
    Последнее редактирование: 10 янв 2018
    Kreol Nekr поблагодарил.
  6. Kreol Nekr

    Kreol Nekr Забанен

    Регистрация:
    21 ноя 2014
    Сообщения:
    231
    Благодарности:
    108
    Баллы:
    100
    Пол:
    Мужской
    Советую, чтобы оружие не появлялось у НПС, добавить строчку
    Открыть спойлер
    [B_RemoveInvItems(other,self,ItMw_1H_Mace_L_03,1); // Забирает палку во время разговора, сделано, чтобы после диалога, не напал повторно ввиду того, что оружие не экипированно.../spoiler], В таком случае предмет будет удален из инвентаря полностью.
    Эта функция используется и в триггерах, при забирании предмета, например при активации телепорта, юнитор исчезает из инвентаря ГГ.


    Озвучка немецкая просто прекрасна, сразу так впомнился 2002 год...
     
    Adanos Gotoman поблагодарил.
  7. MaGoth

    MaGoth ★★★★★★★★★★★
    Администратор

    Регистрация:
    7 янв 2005
    Сообщения:
    14.884
    Благодарности:
    6.720
    Баллы:
    740
    Пол:
    Мужской
    Kreol Nekr,
    Тебя правила ни хрена не касаеются чтоль ?!
     
  8. kor.angar

    kor.angar Участник форума

    Регистрация:
    28 ноя 2017
    Сообщения:
    89
    Благодарности:
    20
    Баллы:
    30
    Пол:
    Мужской
    так НПС же должен отобрать оружие, а не забрать. лучшее это враг хорошему. сейчас все натурально:
    НПС видит на герое оружие и вступает с ним в поединок. если НПС отдубасил ГГ, то поднимает оружие с земли, а если не отдубасил, то сам значит в пыли:-D значит в следующий раз отдубасит.
    Открыть спойлер
    Код (Text):

    instance DIA_AngarDJG_ItMw(C_Info)
    {
        npc = DJG_705_Angar;
        nr = 1 ; //важность,т.е в где будет стоять строка в начале в конце в середине.
        condition = DIA_AngarDJG_ItMw_Condition;
        information = DIA_AngarDJG_ItMw_Info;
        permanent = TRUE;
        important = TRUE; //если false то диалог начинаете вы,если TRUE нпс начинает разговор с вами!
    };

    func int DIA_AngarDJG_ItMw_Condition()
    {
    var C_Item EquipWeap;
    EquipWeap = Npc_GetEquippedMeleeWeapon(hero);
    if (Hlp_IsItem(EquipWeap,ItMw_Roter_Wind) == TRUE) // проверка на экипированное оружие

    {
    return TRUE;
    };

    };

    func void DIA_AngarDJG_ItMw_Info()
    {
    B_Say_Overlay(self,other,"$DIRTYTHIEF"); // мотивационная фраза ах ты грязный воришка
    AI_StopProcessInfos(self);
    B_Attack(self,other,AR_NONE,1);
    };
     

    есть конечно вероятность что НПС отдубасит ГГ до того, как ГГ успеет достать оружие и по хорошему надо дописать, что в таком случае НПС обыскивает ГГ пока он без сознания и забирает оружие из инвентаря
    но это уже следующий этап. нельзя же прям за раз сделать всё идеально :-D

    ещё раз всем спасибо, сори если был оффтоп.
     
    Последнее редактирование: 10 янв 2018
  9. Kreol Nekr

    Kreol Nekr Забанен

    Регистрация:
    21 ноя 2014
    Сообщения:
    231
    Благодарности:
    108
    Баллы:
    100
    Пол:
    Мужской
    За то, что НПС побит или не побит отвечает файл ZS_Unconscious, Если хотите, чтобы НПС забирал у вас оружие, после того как побил, то обьявите там переменную, которая будет принимать значение TRUE в случае, если вас избили, при этом значении допишите туда убирание предмета у ГГ и появление этого предмета у НПС, не надо там расписывать ничего.
    Открыть спойлер

    if(Npc_IsPlayer(other) && (Hlp_GetInstanceID(self) == Hlp_GetInstanceID(Angar) && (angarisfight == TRUE) && (Npc_HasItem(ITMW_SWord_01)>=1))
    {

    B_GiveInvItems(other,self,ITMW_SWord_01, 1)

    }

    Ну и если наоборот, то соответственно все наоборот переверните и вместо Angar допишите Hero
     
    Adanos Gotoman поблагодарил.
  10. Vlad_Torop

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

    Регистрация:
    2 май 2014
    Сообщения:
    733
    Благодарности:
    469
    Баллы:
    180
    Пол:
    Мужской
    Гляди в скрипт ZS_RansackBody.d(Обработчик состояния грабежа предметов с тел НПС).Там это реализовано с Гарвигом и Святым молотом,Родом и его мечом,Френсисом и ключом от хибары Грега.
    А вообще,советую обзавестись скриптами с комментариями от Nifariusа(MaGoth здесь оставлял рабочую ссылку ).Кое-что,да станет понятнее.
     
    Последнее редактирование: 11 янв 2018
  11. RPGamer

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

    Регистрация:
    23 дек 2016
    Сообщения:
    149
    Благодарности:
    44
    Баллы:
    65
    Пол:
    Мужской
    Ребят подскажите пожалуйста как создать одноручное оружие с минимальным радиусом и 0 урона и желательно что бы было невидимым! очень надо)
     
  12. lorddemonik1

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

    Регистрация:
    15 мар 2012
    Сообщения:
    343
    Благодарности:
    124
    Баллы:
    210
    Пол:
    Мужской
    Если мне не изменяет память, у оружия минимальный урон = 5 (Берется отсюда const int NPC_MINIMAL_DAMAGE = 5), поэтому урон всегда будет наносится (Кроме случаев иммунитета, или если поставишь NPC_MINIMAL_DAMAGE = 0)
    А в остальном, думаю такое сойдет:
    Открыть спойлер

    instance ItMw_1hh(C_Item)
    {
    name = "Кинжал";
    mainflag = ITEM_KAT_NF;
    flags = ITEM_SWD;
    range = 0;
    };
     
    RPGamer поблагодарил.
  13. RPGamer

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

    Регистрация:
    23 дек 2016
    Сообщения:
    149
    Благодарности:
    44
    Баллы:
    65
    Пол:
    Мужской
    Ребят после Декомпеляции Gothic.Dat постоянно вылазят 3 ошибки которые в последствии мешают успешно всё скомпелировать! подскажите пожалуйста как их поправить! или подскажите где я могу найти испраные варианты и вставить их на место тех которые выдают ошибку!заранее спасибо! если скриншотов не достаточно скопирую текст сюда! я просто в этих делах чайник не знаю как лучше сделать!
    Открыть спойлер
    Desktop 01.16.2018 - 11.41.48.11.png
    Открыть спойлер
    Desktop 01.16.2018 - 11.42.15.12.png
    Открыть спойлер
    Desktop 01.16.2018 - 11.42.27.13.png
     
  14. Dimus

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

    Регистрация:
    19 июл 2010
    Сообщения:
    3.959
    Благодарности:
    2.245
    Баллы:
    540
    Пол:
    Мужской
    @RPGamer:
    1. Ищи, где в функции пропущен оператор return, возвращающий значение константы COLL_APPLYDOUBLEDAMAGE.
    2. Смотри правильный фрагмент кода из G2 MDK:
    Код (Text):
    FUNC INT DIA_Dar_Kameradenschwein_Condition()
    {
        if (Dar_LostAgainstCipher == TRUE)
        {
            self.aivar[AIV_LastFightComment] == FALSE; //geht NUR bei ECHTER Important-Info!
            return TRUE;
        };
    };
    3. Для тебя существует разница между присваиванием (=) и сравнением значений на равенство (==)?

    Ещё после декомпиляции тебе придётся исправлять кучу мест, где PB забыли вставить операторы return, возвращающие значение у функций, например, в обработчиках ZS состояний циклическая часть ZS_xxx_Loop() всегда должна возвращать значение LOOP_CONTINUE (продолжить цикл) или LOOP_END (закончить цикл).
     
    Последнее редактирование: 16 янв 2018
    RPGamer поблагодарил.
  15. Vlad_Torop

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

    Регистрация:
    2 май 2014
    Сообщения:
    733
    Благодарности:
    469
    Баллы:
    180
    Пол:
    Мужской
    Не знаю,ты принципиально сам декомпилишь датник,и пользуешся сорсером 3.15,но я бы посоветовал тебе скачать уже декомпилированные акелловские скрипты с правками.Ссылка в моем посте чуть выше(там же ты можешь скачать и скриптовую болванку с пояснениями).И пользовать сорсер 3.14,судя по твоим скриншотам,он несколько информативнее относительно ошибок.
     
    RPGamer поблагодарил.
  16. Gor

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

    Регистрация:
    26 дек 2009
    Сообщения:
    888
    Благодарности:
    482
    Баллы:
    230
    Пол:
    Мужской
    Простите, а что в этой строке правильно?
    Может так должно быть
    Код (Text):
    self.aivar[AIV_LastFightComment] = FALSE;
     
  17. Vlad_Torop

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

    Регистрация:
    2 май 2014
    Сообщения:
    733
    Благодарности:
    469
    Баллы:
    180
    Пол:
    Мужской
    Возник такой вопрос:
    По сюжету ГГ рассказывает НПСу что-то.Диалог заканчивается.НПС должен это что-то осмыслить какое-то время(минуты,секунды,НЕ СУТКИ),и только после этого обратиться к ГГ.Можно ли в инстанции самого диалога выставить границы времени,в которых НПС после предыдущего разговора с ГГ "уйдет в несозанку ненадолго"? Или же надо лезть куда дальше?
    Экспериментировал с B_ASSESPLAYER..
    Прописывая в нем переменную,которая становится TRUE при встрече с данным НПС,и если ГГ с ним ранее имел разговор о нужной теме.Потом в диалоге выставлял условие для этой переменной.Работает,как-бы сносно.НПС,после разговора отвлекается на свой распорядок,но при виде ГГ сразу обращается к нему.То есть,пауза присутствует,но не контролируемая.
    Можно ли самому ее задать,ведь распорядки бывают разные,и не известно,как какой НПС у разных игроков,в разное время суток отреагирует.ВОТ!
     
    Последнее редактирование: 20 янв 2018
  18. lorddemonik1

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

    Регистрация:
    15 мар 2012
    Сообщения:
    343
    Благодарности:
    124
    Баллы:
    210
    Пол:
    Мужской
    Таймера в игре как таково вроде бы нет. Могу предложить повесить циклический триггер, который будучи вызванным из диалога будет каждую секунду прибавлять к переменной +1, а когда она достигнет например 60, отключить его, разрешив дальнейший диалог
     
    Vlad_Torop поблагодарил.
  19. Vlad_Torop

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

    Регистрация:
    2 май 2014
    Сообщения:
    733
    Благодарности:
    469
    Баллы:
    180
    Пол:
    Мужской
    Я в курсе,спасибо за совет,но циклический триггер у меня присутствует.Спасибо Myxomopу за создание "этой темы"
    Мне было интересно,может есть более легкие пути,которые я по неопытности не заметил.
     
    Последнее редактирование: 20 янв 2018
  20. Haart

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

    Регистрация:
    24 окт 2011
    Сообщения:
    116
    Благодарности:
    16
    Баллы:
    170
    Записать время диалога и день диалога, и паузу - прибавить к текущему времени соответственно, в диалоге указать в условии - что-бы было время не меньше нужного. Может непонятно объясняю. Допустим мы поговорили с нпц в первый день, в 12.30. Пауза у нас 30 минут. Сохраняем время+паузу, дату, в переменные, которые потом проверяются в диалоге - достиг ли нпц нужного времени.

    Я конечно не очень хорошо помню скрипты дедалуса, но рекурсия там была доступна, если мне память не отшибло, значит можно спокойно вычислить время, если нет изначально такой функции, на счет дней вообще не помню)
     
Модераторы: Marvіn, MEG@VOLT

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