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

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

Для чайников

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

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

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

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

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

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

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

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

    Но вот с Кор Ангаром возник затык. Диалог появляется и меч он достаёт, а потом просто замирает
    Открыть спойлер
    Код:
    
    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
    Сообщения:
    675
    Благодарности:
    408
    Баллы:
    140
    Пол:
    Мужской
    Попробовал сейчас на своем кор Тестере,возник такой же затык.Проверил его инстанцию,отсутствовала строчка fight_tactic = ...Прописал ее,и тестер напал.Ты в инстанции своего ангара ничего не менял?
     
    kor.angar поблагодарил.
  5. kor.angar

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

    Регистрация:
    28 ноя 2017
    Сообщения:
    12
    Благодарности:
    2
    Баллы:
    15
    Пол:
    Мужской
    убирал 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
    Сообщения:
    214
    Благодарности:
    99
    Баллы:
    90
    Пол:
    Мужской
    Советую, чтобы оружие не появлялось у НПС, добавить строчку
    Открыть спойлер
    [B_RemoveInvItems(other,self,ItMw_1H_Mace_L_03,1); // Забирает палку во время разговора, сделано, чтобы после диалога, не напал повторно ввиду того, что оружие не экипированно.../spoiler], В таком случае предмет будет удален из инвентаря полностью.
    Эта функция используется и в триггерах, при забирании предмета, например при активации телепорта, юнитор исчезает из инвентаря ГГ.


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

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

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

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

    Регистрация:
    28 ноя 2017
    Сообщения:
    12
    Благодарности:
    2
    Баллы:
    15
    Пол:
    Мужской
    так НПС же должен отобрать оружие, а не забрать. лучшее это враг хорошему. сейчас все натурально:
    НПС видит на герое оружие и вступает с ним в поединок. если НПС отдубасил ГГ, то поднимает оружие с земли, а если не отдубасил, то сам значит в пыли:-D значит в следующий раз отдубасит.
    Открыть спойлер
    Код:
    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
    Сообщения:
    214
    Благодарности:
    99
    Баллы:
    90
    Пол:
    Мужской
    За то, что НПС побит или не побит отвечает файл 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
     
  10. Vlad_Torop

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

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

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

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

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

    Регистрация:
    15 мар 2012
    Сообщения:
    242
    Благодарности:
    87
    Баллы:
    190
    Пол:
    Мужской
    Если мне не изменяет память, у оружия минимальный урон = 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
    Сообщения:
    147
    Благодарности:
    27
    Баллы:
    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.535
    Благодарности:
    2.022
    Баллы:
    540
    Пол:
    Мужской
    @RPGamer:
    1. Ищи, где в функции пропущен оператор return, возвращающий значение константы COLL_APPLYDOUBLEDAMAGE.
    2. Смотри правильный фрагмент кода из G2 MDK:
    Код:
    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 в 08:01
    RPGamer поблагодарил.
  15. Vlad_Torop

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

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

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

    Регистрация:
    26 дек 2009
    Сообщения:
    844
    Благодарности:
    455
    Баллы:
    230
    Пол:
    Мужской
    Простите, а что в этой строке правильно?
    Может так должно быть
    Код:
    self.aivar[AIV_LastFightComment] = FALSE;
     
Модераторы: Marvіn, MEG@VOLT

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