Новости В Of Ash and Steel начался закрытый плейтест
  • 3.870
  • 9
Разработчики "Русской Готики" объявили о старте закрытого плейтеста. Если вы оставляли заявку на участие, не забудьте проверить электронную почту или посмотреть свою библиотеку - возможно игра уже...
С Днём России!
  • 4.986
  • 6
Дорогие друзья! Поздравляю вас с Днём России! Этот праздник напоминает нам о богатой истории и культуре нашей страны, о её величии и непоколебимом духе народа! Желаю вам крепкого здоровья...
Новости Анонсирован Atomic Heart II
Новости Анонсирован ремастер Final Fantasy Tactics
  • 3.203
  • 2
Культовая пошаговая тактическая RPG от Square Enix получит второе дыхание. На проходящей выставке State of Play, где анонсируются игры для Play Station, состоялся анонс ремастера Final Fantasy...

В процессе Эффектные эффекты: как перевесить эффекты(не визуал!) со стрел на само оружие?

Ержан

Новичок
Участник форума
Регистрация
22 Авг 2022
Сообщения
21
Реакции
0
Баллы
6
Лучшие ответы
0
#1
вопрос в чистом виде:
после декомпиляции марвином хелпером, ищем файлы со стрелами/болтами . находим, например, огненные itrw_addon_firearrow.d:
Код:
instance ITRW_ADDON_FIREARROW(C_ITEM)
{
    NAME = "Огненная стрела";
    MAINFLAG = ITEM_KAT_MUN;
    FLAGS = ITEM_BOW | ITEM_MULTI | ITEM_MISSION;
    WEAR = WEAR_EFFECT;
    VALUE = 30;
    EFFECT = "SPELLFX_FIREARROW";
    VISUAL = "ItRw_Arrow_Sky_Claim.3ds";
    MATERIAL = MAT_WOOD;
    DESCRIPTION = NAME;
    TEXT[3] = "Наносит дополнительный урон огнем";
    TEXT[4] = "Шанс поджечь противника: 35%";
    TEXT[5] = NAME_VALUE;
    COUNT[5] = VALUE;
    INV_ANIMATE = TRUE;
    INV_ANIMATE = 1;
};
дальнейший поиск по файлам по эффекту EFFECT = "SPELLFX_FIREARROW" результата не дал.
А хочется сделать так, чтобы эффект поджога (с %% шансом) повесить например на булаву или, например, на сам лук/арбалет вне зависимости от стрел которыми он в данный момент заряжен (кстати, эффекты стакнутся если поджог и от лука и от стрел? а если заморозка и огонь: повесят оба?).
куда для instance с_item прописывается эффект взаимодействия (поджог,заморозка, отхил)? и в каком скрипте эти эффекты посмотреть можно?

или ещё пример:
в игре есть молот (Ледяной молот), с локации ледяные горы орков:
Код:
instance ITMW_2H_ICEHAMMER(C_ITEM)
{
    NAME = "Ледяной молот";
    COND_ATR[2] = ATR_STRENGTH;
    COND_VALUE[2] = 400;
    DAMAGETOTAL = 400;
    DAMAGETYPE = DAM_BLUNT;
    DESCRIPTION = NAME;
    FLAGS = ITEM_2HD_AXE | ITEM_MISSION;
    INV_ANIMATE = 1;
    MAINFLAG = ITEM_KAT_NF;
    MATERIAL = MAT_WOOD;
    ON_EQUIP = EQUIP_2H_ICEHAMMER;
    ON_UNEQUIP = UNEQUIP_2H_ICEHAMMER;
    RANGE = 150;
    VALUE = 2000;
    VISUAL = "ice_hammer_2h.3DS";
    TEXT[0] = "Дробящий урон: 400";
    TEXT[1] = "Длина оружия: 150 | Двуручное";
    TEXT[3] = "Пробивание брони: 35%";
    TEXT[2] = "Требуется  силы: 400";
    TEXT[4] = "Шанс заморозить: 30%";
    TEXT[5] = NAME_VALUE;
    COUNT[5] = VALUE;
    RX_SETWEIGHTVALUE(SELF, RX_W_CRUSHINDEX, 2);
    RX_SETWEIGHTVALUE(SELF, RX_W_MELEEWEAPONINDEX, 8);
};
я в глаза долблюсь, но в упор не вижу, где прописывается функция на шанс 30% заморозку при ударе этим молотом.
Вспоможение не помешало бы...
 
Последнее редактирование модератором:

Blackmail01

Гвардеец
Команда форума
Редактор раздела
Пользователь VIP
Участник форума
Регистрация
27 Дек 2019
Сообщения
1.275
Реакции
1.293
Баллы
251
Лучшие ответы
70
#2
@Ержан, заморозка, как и большинство других штук от оружия прописаны огромной в функции rx_weapondamage
C:
        if ((((((hlp_isitem(otherweap, itmw_2h_icehammer) == true) && (!issplashdamage)) && (slf.aivar[43] != id_sandgolem)) && (slf.aivar[43] != id_ghost)) && (hlp_getinstanceid(slf) != hlp_getinstanceid(ogre))) && (slf.guild != gil_troll)) {
            if (rx_isboss(slf)) {
                if ((hero.attribute[atr_mana] >= 50) && rx_getchance(6)) {
                    ast_freezenpc(slf, 2, 0);
                    npc_changeattribute(hero, atr_mana, -50);
                };
            }
            else {
                if (rx_getchance(30)) {
                    ast_freezenpc(slf, 2, 0);
                };
            };
        };
Урон и доп. эффекты стрел ищи в функции rx_rangeweapon
 
Автор
Автор
Е

Ержан

Новичок
Участник форума
Регистрация
22 Авг 2022
Сообщения
21
Реакции
0
Баллы
6
Лучшие ответы
0
#3
@Ержан, заморозка, как и большинство других штук от оружия прописаны огромной в функции rx_weapondamage
C:
        if ((((((hlp_isitem(otherweap, itmw_2h_icehammer) == true) && (!issplashdamage)) && (slf.aivar[43] != id_sandgolem)) && (slf.aivar[43] != id_ghost)) && (hlp_getinstanceid(slf) != hlp_getinstanceid(ogre))) && (slf.guild != gil_troll)) {
            if (rx_isboss(slf)) {
                if ((hero.attribute[atr_mana] >= 50) && rx_getchance(6)) {
                    ast_freezenpc(slf, 2, 0);
                    npc_changeattribute(hero, atr_mana, -50);
                };
            }
            else {
                if (rx_getchance(30)) {
                    ast_freezenpc(slf, 2, 0);
                };
            };
        };
Урон и доп. эффекты стрел ищи в функции rx_rangeweapon
как ты сделал, чтобы показывалось?
if ((hero.attribute[atr_mana]
ибо у меня показывается так:
if (HERO.ATTRIBUTE[2] >= 50) && RX_GETCHANCE(6)
 

Blackmail01

Гвардеец
Команда форума
Редактор раздела
Пользователь VIP
Участник форума
Регистрация
27 Дек 2019
Сообщения
1.275
Реакции
1.293
Баллы
251
Лучшие ответы
70
#4
как ты сделал, чтобы показывалось?
if ((hero.attribute[atr_mana]
ибо у меня показывается так:
if (HERO.ATTRIBUTE[2] >= 50) && RX_GETCHANCE(6)
Декомпилировал скрипты с помощью decdat tool. В процессе - Обновление боссов
Регулярным выражением ещё потом лишние комментарии убрал.
 
Автор
Автор
Е

Ержан

Новичок
Участник форума
Регистрация
22 Авг 2022
Сообщения
21
Реакции
0
Баллы
6
Лучшие ответы
0
#5
Ребятки, покритикуйте то, что я тут наваял:
[Вообще, идея возникла с того, что я собрал в игре по частям Драг Нимрод, даже так ДРАГ НИМРОД! а на выходе оказался довольно таки посредственный арбалет 450 флэт нескалирующегося урона и...всё. и это за квесты по 4 локациям на 5 акте, легендарный айтем?????? да ещё и требования непропорциональные 100 владения арб, 450 силушки. С этим явно надо что-то делать]

я тут подшаманил на косарь урона, цена стала - нормальная для такого рода айтема, десяточку владения скинул, легчайший визуальчик прикрутил.

Код:
instance itrw_greatarbalet_orc_05(C_ITEM)
{
itrw_greatarbalet_orc_05_old();
DAMAGE[6] = 1000;
value = 40000;
TEXT[0] = "Колющий урон: 1000";
TEXT[4] = "Легендарный арбалет орков  modified...";
COND_ATR[0] = AIVRX_NPC_ATR_CROSSBOW;
COND_ATR[2] = ATR_STRENGTH;
COND_VALUE[0] = 90;
COND_VALUE[2] = 450;
EFFECT = "SPELLFX_MAGICBOLT";
};
Потом я решил немного больше освоить...назовем это... "модификацией скриптов".
Лук Прядильщик боли: itrw_kmr_darklong_bow_01
был усовершенствован так, чтобы стреляя из него чем угодно (хоть какашками) на дистанцию до 3200 при попадании - цель замораживалась на 4 сек. ну и 15 дамага плюсом получала.

Код:
func void rx_rangeweapon(var c_npc oth, var c_npc slf, var c_item otherweap)
{ var int dist;
  dist = npc_getdisttonpc(oth, slf);
    if (hlp_isitem(otherweap, itrw_kmr_darklong_bow_01) == true)
    {
        if (dist <= 3200)
        {
           ast_freezenpc(slf, 4, 1);
           b_magichurtnpc(oth, slf, 15);
        };
    };
};
Посмотрите, кто понимает, код оптимален или нет.
ast_freezenpc(slf, 4, 1) - нихрена не понял третий аргумент за что отвечает.
ЭФФЕКТЫ от лука и стрел стакаются:
Если ебашить взрывными стрелами, то, поскольку они дамажат в радиусе, в этом же радиусе все будут и замерзать. Если ебашить огненными, то будут замерзать с лука и гореть(если прокнуло) - со стрелы. Нежить - не тестил, яд - не стакается.
 
Последнее редактирование модератором:

GeorG

Чародей божьего бага
Команда форума
Администратор форума
Пользователь VIP
Почётный пользователь
 
Участник форума
Регистрация
31 Мар 2010
Сообщения
20.920
Реакции
5.677
Баллы
1.181
Лучшие ответы
86
#6
@Ержан, вам явно в этот раздел с такими вопросами: Модостроение - Вопросы по моддингу Gothic
При этом не надо все валить в одну тему, на разные вопросы надо создавать новую тему.

Эту тему перенесу в раздел модинга.
При размещения кода, используйте теги [CODE]// тут код[/CODE] из панели инструментов.
 

Blackmail01

Гвардеец
Команда форума
Редактор раздела
Пользователь VIP
Участник форума
Регистрация
27 Дек 2019
Сообщения
1.275
Реакции
1.293
Баллы
251
Лучшие ответы
70
#7
ast_freezenpc(slf, 4, 1) - нихрена не понял третий аргумент за что отвечает.
Это знают лишь Ликёр с Хаартом. Функция в DLL, нам туда доступа нет.

По функции rx_rangeweapon сразу вижу - говно получится. Ты таким образом заменяешь всю функцию. Ито что ты накодил будет работать, а вот то что было там ранее - перестанет.
C:
func void rx_rangeweapon(var c_npc oth, var c_npc slf, var c_item otherweap)
{ var int dist;
  dist = npc_getdisttonpc(oth, slf);
     rx_rangeweapon_old(); //Это важная штука добавляет оригинальную функцию. Работает со всеми, достаточно _old добавить. Можно использовать как до так и после своего кода.
    if (hlp_isitem(otherweap, itrw_kmr_darklong_bow_01) == true)
    {
        if (dist <= 3200)
        {
           ast_freezenpc(slf, 4, 1);
           b_magichurtnpc(oth, slf, 15);
        };
    };
};

По балансу смотри сам.
 
Сверху Снизу