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

В процессе Г2:Новый баланс. описание некоторых функций

Ержан

Бродяга
Участник форума
Регистрация
22 Авг 2022
Сообщения
29
Реакции
0
Баллы
8
Лучшие ответы
0
#1
Код:
instance itmw_sword_blood(c_item) {
    name = "Ар'Урат";
    cond_atr[2] = atr_strength;
    cond_value[2] = 600;
    damagetotal = 500;
    damagetype = dam_edge;
    description = name;
    flags = item_2hd_swd | item_mission;
    inv_animate = 1;
    mainflag = item_kat_nf;
    material = mat_metal;
    on_equip = equip_2h_superheavy;
    on_unequip = unequip_2h_superheavy;
    protection[prot_magic] /*5*/ = 50;
    range = 160;
    value = 3500;
    visual = "BLADE_BLOOD_2H.3DS";
    wear = wear_effect;
    text = "Рубящий урон: 500";
    text[1] = "Длина оружия: 160 | Двуручное";
    text[3] = "Пробивание брони: 60% | Защита от магии: 50";
    text[2] = "Требуется  силы: 600";
    text[4] = "Лезвие невероятно острое и источает магию...";
    text[5] = name_value;
    count[5] = value;
    rx_setweightvalue(itmw_sword_blood, rx_w_crushindex, 5);
    rx_setweightvalue(itmw_sword_blood, rx_w_meleeweaponindex, 9)
вопрос: что делает rx_w_crushindex, 5 и rx_w_meleeweaponindex, 9 ?
Код:
func void RX_SETWEIGHTVALUE(var C_ITEM ITM, var int INDEX, var int VALUE)
{
    if RX_ISSPACETNET
    {
        return;
    };
    RX_SETWEIGHTVALUEEXT(ITM, INDEX, VALUE);
};
 

Liker

Демиург
Команда форума
Редактор раздела
Модостроитель
Почётный пользователь
 
Участник форума
Регистрация
21 Фев 2016
Сообщения
27.526
Реакции
24.021
Баллы
1.446
Лучшие ответы
1.070
#2
Это функции установки веса для плагина "Экспериментальные скрипты"
 
Автор
Автор
Е

Ержан

Бродяга
Участник форума
Регистрация
22 Авг 2022
Сообщения
29
Реакции
0
Баллы
8
Лучшие ответы
0
#3
Это функции установки веса для плагина "Экспериментальные скрипты"
спасибо за разъяснения.
к чему, собственно был вопрос: я изначально думал, что это некие функции, которые определяют для оружия "интенсивность взаимодействия с нпс". идея в том, чтобы параметр dam_fly (и возможно какие-то еще) отправляли в полет мобов.
Например,
Код:
instance itmw_halleberde_04(c_item) {                                   // Алеор 2h
    itmw_halleberde_04_old();
    cond_atr = aivrx_npc_atr_stamina;
    cond_atr[1] = atr_strength;
    cond_value = 90;
    cond_value[1] = 370;
    damagetotal = 475;
    damagetype = dam_edge | dam_fly;
    damage[dam_index_edge] = 100;
    damage[dam_index_fly] = 375;
    text = "Рубящий урон: 100, Отталкивающий урон:375";
    text[1] = "Длина оружия: 170 | Двуручное";
    text[2] = "Требуется  силы: 370 | выносливости: 900";
    text[3] = "Пробивание брони: 50%";
    text[4] = "Зловещее оружие лорда теней Даката. отправляет в полёт";
не так хорошо отправляет в полет мобов, как хотелось бы (не так часто прокает и не так далеко), мобы сопротивляются (может это зависит от их силы/ловкости)?. раз уж эти функции отвечают за другое, может есть способ "усилить"(чаще,дальше) эффект от dam_fly
 
Автор
Автор
Е

Ержан

Бродяга
Участник форума
Регистрация
22 Авг 2022
Сообщения
29
Реакции
0
Баллы
8
Лучшие ответы
0
#4
подскажите пжлст как прикрутить эффект заклинания на тычку мечом?
наваял эффект через wrld_playeffect, но он работает странно: icewave не станит, есть визуал и дамаг, а стана нет..

Код:
func void rx_weapondamage(var c_npc oth, var c_npc slf) {                                // вносим изменения в поведение оружия
    var int tempdamage;
    var c_item otherweap;
    tempdamage = 0;
    rx_weapondamage_old(oth,slf);
    otherweap = npc_getreadiedweapon(oth);    // Это пиздец какая важная строчка.
    var int npcinstance;
    var c_npc npc;
    npc = hlp_getnpc(npcinstance);
    var c_npc atk;
    var c_npc target;
if npc_isplayer(oth) && (slf.flags != npc_flag_immortal) && (slf.flags != npc_flag_xaradrim) && (slf.flags != orctemplenpcflags) && (hlp_getinstanceid(slf) != hlp_getinstanceid(stonegolem_osta)) && (hlp_getinstanceid(slf) != hlp_getinstanceid(xranfreg)) && (hlp_getinstanceid(slf) != hlp_getinstanceid(caracust))
 {   
     if (((((hlp_isitem(otherweap, itmw_2h_urizel) == true)  && (slf.aivar[43] != id_sandgolem)) && (slf.aivar[43] != id_ghost)) && (hlp_getinstanceid(slf) != hlp_getinstanceid(ogre))) && (slf.guild != gil_troll))  // Уризель (который не fake, и который  имеет вставленную руну) замораживает с шансом30%(боссы 6%) и дот урон огнем на int/10 3 раза
        {
            tempdamage = (atr_intellect/ 10);
            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, 4, 0);                                                            // замораживает получившего удар нпс на 4 сек, если прокнул шанс 30%
                };
                rx_applydotdamage(self, hero, 3, tempdamage, dam_fire, 1000, true);                     // применяет дот(damage over time) урон '3' раза в размере 'tempdamage'  от огня 'dam_fire'
            };
        };
    if (((((hlp_isitem(otherweap, itmw_blood_katana) == true)  && (slf.aivar[43] != id_sandgolem)) && (slf.aivar[43] != id_ghost)) && (hlp_getinstanceid(slf) != hlp_getinstanceid(ogre))) && (slf.guild != gil_troll))   //  Кровавый пир, будет вешать либо icewave либо icecube с шансом
    {
        if (rx_getchance(10)) {
            wld_playeffect("SPELLFX_ICEWAVE", hero, hero, 0, 200, dam_magic, false);
                    }
        else {
            if (rx_getchance(30)) {
                ast_freezenpc(slf, 2, 0);
            };
        };
    };
   };
};
 

Liker

Демиург
Команда форума
Редактор раздела
Модостроитель
Почётный пользователь
 
Участник форума
Регистрация
21 Фев 2016
Сообщения
27.526
Реакции
24.021
Баллы
1.446
Лучшие ответы
1.070
#5
@Ержан, так просто эффект не сделать, визуал не равно эффекту в НБ, стан это RX_Stun вроде функция
 
Автор
Автор
Е

Ержан

Бродяга
Участник форума
Регистрация
22 Авг 2022
Сообщения
29
Реакции
0
Баллы
8
Лучшие ответы
0
#6
@Ержан, так просто эффект не сделать, визуал не равно эффекту в НБ, стан это RX_Stun вроде функция
хорошо, я хочу попробовать костылями подойти к этой теме навеса заклинания: ты не мог бы поделиться кодом, где ItRw_ExplosiveArrow "взрывные стрелы" (скорее всего, это где то в dll). Я хочу посмотреть как в них реализован aoe урон, и попробовать пересесить логику на icewave c костыльным rx_stuntarget(slf, время)
 

Liker

Демиург
Команда форума
Редактор раздела
Модостроитель
Почётный пользователь
 
Участник форума
Регистрация
21 Фев 2016
Сообщения
27.526
Реакции
24.021
Баллы
1.446
Лучшие ответы
1.070
#7
@Ержан, логику из dll не перенести в скрипты, там посылается декскриптор урона, он переписан в НБ и хукнут, вряд ли туда можно что-то добавить еще внешним кодом. Стрелы реализованы через перехват oCAIArrow::ReportCollisionToAI, в общем я бы не парился, вряд ли там можно что-то дописать.
 
Сверху Снизу