![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#1
|
|
![]() Learning Dart Arts Сообщений: 48 Спасибо сказали: 2 раза ![]() |
Итак в прошлом году я уже поднимал этот вопрос, потом забил и сейчас довожу дело до конца..
С прошлого раза я знаю что флага удачи(как например морали) в игре нет (или его не нашли) На вопрос как определить сработала ли у юнита в текущем раунде удача мне ответили: **** Наверно единственный вариант - вручную посчитать урон, который должен быть нанесен существу, и если он примерно в 2 раза меньше текущего (!!MF:D), значит, видимо, выпала удача. Можно, наверно, как-нибудь через UN:C узнать... **** Итак моя задача сделать так чтоб при срабатывании удачи в 50% случаев наносился еще 50% доп.урона. Вот что я сделал.. !?MF1&v5105=1; Тригер на атаку (v5105 определяет есть ли у героя нужный для срабатывания скил) !!BG:Q?y8; /сиотрим кто ходит !!FU&y8<>0:E; /если не левая сторона то выходим !!BG:N?y1; /№ текужего стэка !!BMy1:T?y2; /тип текущего стэка !!FU&y1>20:E; /если стэк врага(правой стороны) выходим !!VRy7:Sy1; /запоминаем номер стэка в y7 !!BMy1:U1/?y2; /берем минимальный урон стэка !!BMy1:N?y3; /берем количество воинов в стэке !!BMy1:A?y5; /берем атаку(с бонусами стэка) !!VRy5:Sy5*5; /т.к. каждая ед. атки это +5% дамаги сразу вносим это в переменную !!VRy5&y5>400:S400; /т.к. бонус дамаг от атаки не может быть больше 400% исключаем такую возможность !!VRy4:Sy3*y2; /умножаем кол-во существ на их минимальный урон !!VRy8:Sy4*50:100; /берем 50% этого показателя (т.к. при срабатывании удачи урон не удваеваеться а увеличиваеться на 50%) !!VRy6:Sy4*y5:100; /получаем доп. урон с учетом атаки !!VRy4:Sy4+y6; /прибавляем этот урон !!MF:N?y1; /берем номер атакуемого отряда !!BMy1:D?y5; /берем его защиту !!VRy3:Sy5*25:1000; /Каждая ед. защиты уменьшает урон на 2.5% учитываем это !!VRy3&y3>70:S70; /не может снижать урон более чем на 70% исключаем такое !!VRy6:Sy4*y3:100; /вычисляем % урона, который "уйдет в защиту' !!VRy4:Sy4-y6; /вычитаем этот урон !!VRy4:+y8; /прибавляем 50% (типа сработала удача) !!MF:D?y1; /смотрим какой урон нанесен !!FU&y1<y4:E; /если этот урон меньше чем тот что мы расчитали +50% выходим(значит удача не сработала) !!VRy6:S1R1; /кидаем кость на 50% !!FU&y6=1:E; /смотрим нрань если несовпала выходим !!BMy7:V18; /анимация удачи на атакующий отряд (будет 2 анимации удачи эта+родная) так мы увиди что сработал скил дамага !!VRy2:Sy1*50:100; /50% от урона !!VRy1:Sy1+y2; /прибавляем их к урону !!VRz2:M3/y1; /переводим строковую переменную в числовую !!BU:Mz2; /сообщение в быструю строку с нанесенным уроном !!MF:Fy1; /наносим отредактированный урон Вот такой гемморой! при проверке с маленькими показателями атаки/защиты все работает, но на больших картах со сверх показателями эта фигня часто срабатывает даже если небыло удачной атаки я уже заманался искать что тут неверно... HELP!!!! |
|
|
Гость_Berserker_* |
![]()
Сообщение
#2
|
![]() |
А что за чай "Уда"?
|
|
|
![]()
Сообщение
#3
|
|
Member Сообщений: 97 Спасибо сказали: 80 раз ![]() |
А навыки героя? Кинь название дефа удачи, может чем помогу.
|
|
|
![]()
Сообщение
#4
|
|
![]() Learning Dart Arts Сообщений: 48 Спасибо сказали: 2 раза ![]() |
УдаЧай!
![]() Всмысле название дэфа удачи?? Добавлено ([mergetime]1263762804[/mergetime]): Исправил название темы чтоб не отвлекались на подколки а помогли разобраться с проблемой! |
|
|
![]()
Сообщение
#5
|
|
![]() laughed as one fey Сообщений: 12 167 Спасибо сказали: 20603 раза ![]() |
http://forum.df2.ru/index.php?showtopic=68...ndpost&p=193891
Внизу поста написано, как задавать-считывать удачу. Можно попробовать считывать её в 77007 событии Эры, обнулять и на основе считанного значения прикручивать свой механизм. |
|
|
![]()
Сообщение
#6
|
|
![]() 😸🧡✊✌️ Сообщений: 16 436 Спасибо сказали: 3308 раз ![]() |
C09SPA0.DEF - удача
C10SPF0.DEF - неудача C09SPW0.DEF - мораль C14SPE0.DEF - немораль Добавлено ([mergetime]1263764926[/mergetime]): feanor: чел хочет узнать, сработала удача или нет, а не повысить или понизить... -------------------- Я слежу за тобой!
![]() ![]() Цитата Всегда приятно осознавать, что кто-то делает что-то хуже, чем делал бы ты, если бы умел. Борис "Бонус" Репетур, "От винта!", выпуск 38. |
|
|
![]()
Сообщение
#7
|
|
![]() Learning Dart Arts Сообщений: 48 Спасибо сказали: 2 раза ![]() |
tolich спасибо конечно, но чем мне это поможет? Может я чегото непонял обьясни подробнее как DEF может помочь определить сработала ли удача?
|
|
|
![]()
Сообщение
#8
|
|
![]() Рыцарь в лесу. Сообщений: 4 467 Спасибо сказали: 6233 раза ![]() |
Цитата !!VRy5:Sy5*5; /т.к. каждая ед. атки это +5% дамаги сразу вносим это в переменную Атака с защитой работают не так. Насколько я понял, ваш скрипт построен в рассчёте на то, что игра сначала увеличивает урон в соответствии с такой, затем уменьшает его в соответствии с защитой. На самом же деле защита вычитается из атаки и в зависимости от результата урон либо увеличивается, либо уменьшается.!!VRy5&y5>400:S400; /т.к. бонус дамаг от атаки не может быть больше 400% исключаем такую возможность !!VRy4:Sy3*y2; /умножаем кол-во существ на их минимальный урон !!VRy8:Sy4*50:100; /берем 50% этого показателя (т.к. при срабатывании удачи урон не удваеваеться а увеличиваеться на 50%) !!VRy6:Sy4*y5:100; /получаем доп. урон с учетом атаки !!VRy4:Sy4+y6; /прибавляем этот урон !!MF:N?y1; /берем номер атакуемого отряда !!BMy1:D?y5; /берем его защиту !!VRy3:Sy5*25:1000; /Каждая ед. защиты уменьшает урон на 2.5% учитываем это !!VRy3&y3>70:S70; /не может снижать урон более чем на 70% исключаем такое !!VRy6:Sy4*y3:100; /вычисляем % урона, который "уйдет в защиту' P. S. Я нуб и не шарю. -------------------- ![]() |
|
|
Гость_Berserker_* |
![]()
Сообщение
#9
|
![]() |
Лорд Хаарт, верно. И важно не забыть про ограничения макс бонуса атаки в 300% и макс. защиты в 70%.
Цитата tolich спасибо конечно, но чем мне это поможет? Дьяк в отладчике найдёт по перекрёстной ссылке, где юзается деф. Я так на мораль выходил, если не ошибаюсь. |
|
|
![]()
Сообщение
#10
|
|
![]() Что же Вы , Маэстры, ну-ка гряньте нам что-нибудь !!! Сообщений: 226 Спасибо сказали: 171 раз ![]() |
Если честно, граждане, тут много тонких моментов. Основной конечно это всякие блесы шилды арморы офенсы и т.п., как их учитывать при той реализации, что предлагает автор ???
Второй момент, автор берёт специальный расчёт дамагу, однако лучше воспользоваться конкретным изученным алгоритмом расчёта - в физмиге http://homm3world.narod.ru там скачаете физмиг, в нём лист № 21 или пункт 5.7 в оглавлении. Там чётко описано как и на что работает атака, защита, спелы и УдаЧай. Ещё один очень жуткий момент - ненависть/иммуны существ(что можно глянуть там же в физмиге, пункт 2.2) , это будет портить все эти рас чёты, придётся и это учитывать... да и расчёт нанесённого урона, просто жесть математики - выстрелы полной/ неполной стрелы, рукопашная стрелков и штраф стен города (плюс иже с ними армор арчери, 2 разных лука, один из них сборный, и 3 арта на арчери ) не будем думать каков расчёт для спецов по всему этому делу *death* ну и даже не будем вспоминать о таких моментах как баллиста (на неё тоже удача влияет) и опять же спецам по баллисте... Сколько всё это считать и учитывать *rofl* ? Мой совет - искать структуры в экзешке/памяти, трудоёмко, зато надёжно !! П.С. Извиняюсь за напрашиваемость, а мне помогите пжлст, с адресами структур для препятствий на поле битвы http://forum.df2.ru/index.php?showtopic=54...F%BDentry38295# -------------------- Это всё я : кодинГ, мэпмейкинГ, скриптинГ
Инфо о моих проектах, в основном геройских, http://phomm.narod.ru Раздел моей тактической игры Интакт http://forum.df2.ru/index.php?showforum=135 |
|
|
![]()
Сообщение
#11
|
|
![]() Learning Dart Arts Сообщений: 48 Спасибо сказали: 2 раза ![]() |
pHOOM Ты абсолютно прав! Я слишком поверхностно подошел к данному вопросу. Пытаться учесть все эти тонкости ради такой реализации, это разрыв мозга!
![]() Остаеться ждать другой вариант или надеяться что кто-то таки найдет флаг удачи! P.S. Всем СпасибО! |
|
|
![]()
Сообщение
#12
|
|
![]() Что же Вы , Маэстры, ну-ка гряньте нам что-нибудь !!! Сообщений: 226 Спасибо сказали: 171 раз ![]() |
Есть, конечно, и такая мысль: ресивер ММ, он позволяет получать текст из лога битвы, надо только избрать все варианты всяких разных переводов и кучи языков начиная с английского для процедуры проверки строки на вхождение слова Удача, ещё и в разных падежах )))
Есть и хитрый способ, берем функцию замены строк http://forum.df2.ru/index.php?showtopic=5931 и делаем свою собственную строку для лога битвы при выпадении удачи, например с одной англ а в слове удача, и там уже дело техники, дерзайте , автор ) UPD Так-c, там же в теме по ссылке, в конце темы МоР сделал чтение строк из файлов, тебе нужен genrltxt.txt там 54 строка - "Удача улыбнулась %s", меняй её функцией МоР'а на свою строку, потом в битве читай каждую строку лога и загоняй в функцию проверки строк (её уж самому только писать, сравнивать строку лога со своей строкой, в итоге достигается языко/переводо - независимый скрипт) и, таким образом, думаю, ты достигнешь нужного тебе результата !!! Тут только возникает неизвестная вещь - если строка лога записывается после нужного действия, то извиняй, получится только факт что удача сработала, но последствия удачи уже применены (убито больше народу), и тут как менять уж как то жестко надо... -------------------- Это всё я : кодинГ, мэпмейкинГ, скриптинГ
Инфо о моих проектах, в основном геройских, http://phomm.narod.ru Раздел моей тактической игры Интакт http://forum.df2.ru/index.php?showforum=135 |
|
|
![]()
Сообщение
#13
|
|
![]() Learning Dart Arts Сообщений: 48 Спасибо сказали: 2 раза ![]() |
Интересная идея! Мне такого в голову не могло прити)
Буду пробовать, еще раз спс. |
|
|
![]()
Сообщение
#14
|
|
![]() Что же Вы , Маэстры, ну-ка гряньте нам что-нибудь !!! Сообщений: 226 Спасибо сказали: 171 раз ![]() |
Ну, что? Разобрался с удачей тем способом со строками ?? Всё-таки эффект удачи произходит до вывода строки в лог битвы, или после ? Если после, то можно ли на эффект повлиять ?
-------------------- Это всё я : кодинГ, мэпмейкинГ, скриптинГ
Инфо о моих проектах, в основном геройских, http://phomm.narod.ru Раздел моей тактической игры Интакт http://forum.df2.ru/index.php?showforum=135 |
|
|
![]()
Сообщение
#15
|
|
Member Сообщений: 97 Спасибо сказали: 80 раз ![]() |
Ну с работой удачи - я разобрался, но написать скрипт, если и возможно, то только через эру и очень геморройно. Во-первых, обращение к длл Angel должно быть в том же потоке, что и поток обрабатывающий битву и вероятность удачи (вероятнее всего так оно и есть). Т.к. случайное число для генерации получается из TlsGetValue (ячейка №12). Далее несколько действий над полученным значением (значение в eax):
MOV ECX,[DWORD EAX+14] IMUL ECX,ECX,343FD ADD ECX,269EC3 MOV [DWORD EAX+14],ECX MOV EAX,ECX SHR EAX,10 AND EAX,7FFF и SUB ESI,EDI CDQ INC ESI IDIV ESI MOV EAX,EDX ADD EAX,EDI в eax - значение, которое сравнивается с удачей героя, если оно меньше или равно, то удача срабатывает иначе нет. Добавлено ([mergetime]1264171116[/mergetime]): Хотя... можно попробовать вызвать процедуру генерации случайного числа для удачи через эру, если получиться и сравнивать с удачей героя. - это лучший вариант. Адресс процедуры 50C7C0h тип register eax = удача героя edx = 18 ecx = 1 результат есно в eax |
|
|
![]()
Сообщение
#16
|
|
![]() Learning Dart Arts Сообщений: 48 Спасибо сказали: 2 раза ![]() |
Способ со строками прокатил но немного с предподвыпердвертом
![]() В строку естественно добавляеться после срабатывания удачи. такчто после считывания и сравнения можно определить была ли удача, но изменить урон в текущей атаке никак, только функцией (после действия) наносим доп. урон через !!BM:K# но при этом монстр будет странно дергаться после атаки и еще если этот урон его добьет, то останеться картинка отряда, но без численности. Вобщем баги.. баги Добавлено ([mergetime]1264346563[/mergetime]): А с Эрой я не сталкивался и абсолютно не шарю в этом... Но все равно спасибо Дьяк! |
|
|
![]()
Сообщение
#17
|
|
![]() Рыцарь в лесу. Сообщений: 4 467 Спасибо сказали: 6233 раза ![]() |
Цитата Есть, конечно, и такая мысль: ресивер ММ, он позволяет получать текст из лога битвы, надо только избрать все варианты всяких разных переводов и кучи языков начиная с английского для процедуры проверки строки на вхождение слова Удача, ещё и в разных падежах Смотрите с падежами не перемудрите. А то будет срабатывать после каждого каста одноимённого заклинания.
-------------------- ![]() |
|
|
![]()
Сообщение
#18
|
|
![]() 😸🧡✊✌️ Сообщений: 16 436 Спасибо сказали: 3308 раз ![]() |
Есть другая идея: генерировать сработавшую удачу/неудачу скриптом, а чтобы она не срабатывала стандартно, перед каждым действием монстра принудительно ее обнулять. Тогда вопрос "сработала/не сработала" вообще стоять не будет.
-------------------- Я слежу за тобой!
![]() ![]() Цитата Всегда приятно осознавать, что кто-то делает что-то хуже, чем делал бы ты, если бы умел. Борис "Бонус" Репетур, "От винта!", выпуск 38. |
|
|
![]()
Сообщение
#19
|
|
![]() Banished Сообщений: 1 782 Спасибо сказали: 116 раз ![]() |
хоббиты
-------------------- |
|
|
![]()
Сообщение
#20
|
|
![]() 😸🧡✊✌️ Сообщений: 16 436 Спасибо сказали: 3308 раз ![]() |
Что, хоббитам нельзя поставить нулевую удачу, в принципе?
-------------------- Я слежу за тобой!
![]() ![]() Цитата Всегда приятно осознавать, что кто-то делает что-то хуже, чем делал бы ты, если бы умел. Борис "Бонус" Репетур, "От винта!", выпуск 38. |
|
|
![]() ![]() |
Текстовая версия | Сейчас: 26 September 2025 - 22:44 |
Copyright by Алексей Крючков
![]() Programming by Degtyarev Dmitry |
|