Уважаемые гости и новички, приветствуем Вас на нашем форуме
Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».
Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
Удачи!
Друзья, доброго времени суток! Спешите принять участие в конкурсе "Таинственные миры" 2025!
Ждем именно вас!
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
орки наносят критические удары
Будем разбавлять теоретическую часть практическими занятиями. Напишем простенький код который будет добавлять «криты» оркам.
Для начало наверное нам следует определить, кто атакует орки или нет:) самый простой способ (но далеко не единственный) это сделать через...
**
дальше попробую написать что можно сделать после того как выполнена проверка:
*заново провести расчет урона
*сделать проверку на то кто жертва и увеличить или уменьшить урон
*сделать рандом и нанести дополнительный (критический) урон
*перевести в какое то состояние после нанесения урона...
как определить каким оружием бы нанесён урон
итак у нас уже есть оружие item, а значит мы без затей можем провести проверку по всему что есть в классе C_Item.
damageType - тип наносимого повреждения
урон
damageType
пример проверки
примечание
"Дробящий"
DAM_BLUNT
if (item.damageType ==...
Пример использования функции. Например вы хотите полностью поменять расчёт урона для рапир и шпаг.
В OnDamage_Hit производится проверка на то был ли удар нанесён Рапирой или Шпагой, после рассчитываем новый урон или возвращаем старый. Проверку и расчёт урона я для удобства вынес в отдельный...
используй 0,1 или 2, так как массив ограничивается тремя, а начинается а нуля.
cond_atr[0]
cond_atr[1]
cond_atr[2]
для damagetype используй то что уже есть.
//
// DAMAGE TYPES v2.0
//
CONST INT DAM_INVALID = 0 ; // 0 -...
нужно будет при этом перенести аивер НПС + его текущее расписание + его лут. т.е. сделать полноценный слепок нпс. на скриптах это делать прям тяжко.
как альтернатива вставлять броню через новую функцию
и потом её где то "одеть", например в B_ResetAll
внутри Npc_IsEquippedItMwDAG и Npc_IsEquippedItMwRPR проще сделать проверки по инстанциям, а в Npc_IsEquippedItMwSWD и Npc_IsEquippedItMwAXE сделать уже проверки по флагам. в таком случае проверки по флагу должны идти последними, то есть как то так
func int OnDamage_Hit(var int damageTotal)
{...
KirTheSeeker, напиши сколько формул у тебя будет для одноручного оружия. и сколько ты планируешь использовать классов/"флагов" для одноручного оружия. по возможности дай краткое описание для этих классов/"флагов".
например
DMG_ItMw_1h_Dex для оружия требующего ловкость, сила не требуется...
а файлы *.d у тебя блокнот не хочет открывать?
KirTheSeeker, удали этот файл и файл про оружие паладинов. скачай архив с файлом из моего вчерашнего поста. проверь. после этого начни его дописывать / переписывать. там стоят строчки Hlp_PrintConsole которые будут выводить информацию в окно...
сначала ты просто проверяешь работает оно или нет. данный код сохрани в файл и добавь в папку авторан вместе с dll oDamageHelper файлом.
после этого можешь приступить к "сделать правильно" :
1) сделать отдельные функции для каждого урона прописав там формулы расчёта урона.
2) сделать...
в коде указано, герой держит коготь белиара.
наверное ты хочешь получить что то такое
// self - атакующий
// victim - атакуемый
// item - орудие убийства (может быть null)
func int OnDamage_Hit(var int OldDamageTotal)
{
if (item.flags & ITEM_SWD)
{
var int...
если ты хочешь это сделать мини плагином на Юнион который где то в ини файла будет что то брать, то лучше это всё уточнять у того кто этот плагин будет делать.
если ты будешь это реализовать на скриптах используя плагин для OnDamage_Hit то в таком случае определять оружие ты можешь или по флагу...
VAR INT id ;
VAR STRING name,nameID ;
id же не используется? :)
человеческий фактор есть везде. в самой инстанции с такой же вероятность можно неправильно вписать флаг. исключение человеческого фактора это вопрос...
На данном сайте используются файлы cookie, чтобы персонализировать контент и сохранить Ваш вход в систему, если Вы зарегистрируетесь.
Продолжая использовать этот сайт, Вы соглашаетесь на использование наших файлов cookie.