Berserker
Posts: 16657
|
|
30.01.2020 23:12 |
|
Sandris
Posts: 422
|
Заменил в Оплоте Кентавров Феями.
Подскажите, как также правильно прописать замену Кентавров на Маленьких фей и Фей в генераторе-двеллинге Конюшни Кентавров на карте.
Code:
!!VRy9:S1 T19; get time-based random # 1-20
!!DO6100/1/y9/1:P1; randomize start of random sequence--JHV
!!UN:P133/?y9; // check for rule "Some dwellings have upgr. creatures"
!!VRy2:S6; // Конюшни Кентавров
!!VRy3:S59; !!VRy4:S0; // Маленькие феи / Феи
!!VRv900:C0/0/0/0/0/0/0/0/0/0/0/0;
!!VRy7:S118; !!VRy8:S119;
!!UN:U17/y2/?y1;
!!DO6106/1/y1/1:P0/y2/y3/y4/y3/y4/y7/y8/y9;
P.S. Попробовал просто приписать Фей к двеллингу, но не хватает знаний установить 7-дневный интервал их появления в жилище.
Code:
!?OB17/6&1000; Конюшни кентавров
!!OB998:T?y1 U?y2;
!!FU|y1<>17/y2<>6:E;
!!DW998:M0/118/20; Маленькие Феи заселяются в Конюшни кентавров с приростом 20
(This post was last modified: 05.02.2020 19:23 by Sandris.)
|
|
05.02.2020 16:44 |
|
Ethereal
Posts: 362
|
asandris, с Тифоном это делается намного проще. Там же, в "DwTable.txt" можно и Фей к любому жилищу добавить.
Кстати у меня была такая же идея, но я от неё отказался. Феи достойны большего, чем конюшни и без перерисовки строений замков тут не обойтись. Что же касается внешних жилищ, то можно просто поменять def-ы.
(This post was last modified: 12.02.2020 12:25 by Ethereal.)
|
|
12.02.2020 12:19 |
|
Zur13
Posts: 223
|
Может кто знает у меня в ЕРА самой новой похоже сломан сетевой код. Ситуация такая, сетевая игра, синий против красного, один из героев, надевает артефакт 170 из рюкзака руками без скриптов (проверял и вариант когда он подбирает артефакт на карте, и он сразу надевается в слот), после чего герой с надетым артефактом вступает в битву с героем второго игрока, но в битве идет рассинхрон, на одном компе артефакт надет на первом герое, а на втором компе не надет:
Code:
!?BG0&1000;
!!UN:P895/?v1; [Check for WoG option]
!!FU&v1<>1:E; [Exit if Option 895 is OFF]
!!BG:A?y-1; [y-1 action]
!!BG:H?y-2; [y-2 hero]
!!BG:N?y-3; [y-3 acting stack number]
!!BG:E?y-4; [y-4 target stack number (-1 if no dest stack)]
!!BG:D?y-5; [y-5 destination position]
!!BG:S?y-6; [y-6 Number of a Spell to Cast ]
!!FU&v6357>=0:E; [Exit if invalid reduce request (self recursion call?)]
!!VRv6357:S-1; [v6357 request to reduce magic damage]
!!VRv6356:S-1; [v6356 caster spell]
!!VRv6355:S-1; [v6355 caster hero side]
!!IF:M^Action: %Y-1 Spell: %Y-6 Hero: %Y-2^;
!!FU&y-1<>1:E; [Exit if not a Hero cast a spell action]
!!FU&y-2<0:E; [Exit invalid hero]
!!FU&y-6<10:E; [Exit if invalid spell]
!!FU&y-6<>23/y-6<>16/y-6<>21/y-6<>15:E; [Exit if invalid spell]
*!FU&y-4<0:E; [Exit if no target stack]
*!FU&y-5<0:E; [Exit if invalid target position]
!!VRy-7:S0; [y-7 = 0]
!!HEy-2&y-2>=0:A2/170/?y-8/?y-7; [y-7 number of equipped #170 hero]
!!IF:M^Action: %Y-1 Spell: %Y-6 Hero: %Y-2 ArtEquiped: %Y-7^;
В результате на компе 1 выводит ArtEquiped: 1 а на втором ArtEquiped: 0, остальные три переменные в выводе одинаковы.
(This post was last modified: 22.02.2020 13:29 by Zur13.)
|
|
22.02.2020 13:09 |
|
Berserker
Posts: 16657
|
|
22.02.2020 16:02 |
|
Zur13
Posts: 223
|
(22.02.2020 16:02)Berserker Wrote: Zur13, в ближайшем же обновлении я отключу временно изменение генератора случайных чисел. Очень важен будет твой отчёт, исправился баг или нет. Если нужно срочнее, скомпилирую код 2.9.10 без генератора и загружу быстрее.
Да я смогу проверить, у меня сейчас ЕРА 2.9.10 английская с HD модом 5.0 РС64 модами ВоГ и Вог скрипты и моим на комбо артефакты. Хотя я не совсем понимаю как связан генератор случайных чисел с работой ресивера
!!HEy-2:A2/170/?y-8/?y-7; [y-7 number of equipped #170 hero]
Проверял также на артефакте №128 на всякий случай, тоже самое второй ПК не знает о том что герой на первом ПК надел артефакт. Это не ситуация когда скрипт заменил артефакт на карте случайным образом на другой, это моя тестовая карта в которой артефакт прямо в редакторе положен в рюкзак герою.
Нашел еще один кусок кода который не работает в новой версии ЕРА:
Похоже что в новой версии ЕРА сломался вот этот код, y1 всегда 1, в 2.8.8 работало:
Code:
** x1 == hero id 0..155
** x2 == ?RESULT (this much free slots is in hero backpack)
!?FU23041;
!!FU&v9217<>1:E; [Exit if WoG option is not ON]
!!VRy1:S0;
!!DO23042/19/82/1:Px1/=y1/?y1; [y1 free slots counter in x1 hero backpack]
** x1 == hero id 0..155
** x2 == this much free slots counted on previous steps
** x3 == this much free slots counted on previous steps + this step
** x16 == backpack slot 19..82
!?FU23042;
!!FU&v9217<>1:E; [Exit if WoG option is not ON]
!!VRx3:Sx2;
!!HEx1:A1/?y1/x16; [y1 Check what artifact is in x16 slot]
!!VRx3&y1<0:Sx2+1; [change result counter x3]
(This post was last modified: 22.02.2020 18:47 by Zur13.)
|
|
22.02.2020 16:42 |
|
Berserker
Posts: 16657
|
Quote:Да я смогу проверить, у меня сейчас ЕРА 2.9.10 английская с HD модом 5.0 РС64 модами ВоГ и Вог скрипты и моим на комбо артефакты. Хотя я не совсем понимаю как связан генератор случайных чисел с работой ресивера
Рассинхронизация может быть в другом коде, где используется VR:R. Будут разные последовательности на разных сторонах = разные события, артефакты, замены на карте.
Да, !!DO циклы оптимизированы до схожих с циклом FOR на других ЯП, подобные проверки работать не будут в !!DO/!!FU:P/!!FU:D.
Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
|
|
22.02.2020 23:07 |
|
Zur13
Posts: 223
|
Тут наткнулся на непонятную ситуацию, и единственный имеющий смысл вариант наблюдаемого поведения, это то что иногда при вызове функций, не указанные явно параметры функций не обнуляются
Code:
!!FU21020:P1/2;
!?FU21020;
* х1 == 1
* х2 == 2
* но в некоторых случаях х3 <> 0
Я сейчас не смог найти в справочнике этого, но вроде раньше где-то встречал упоминание о том что пропущенные аргументы автоматически обнуляются, там даже был пример вроде такого !!FUxxx:P1/2//4; с указанием что аргумент 3 будет считаться 0. Что-то изменилось или это относится только к явно пропущенным аргументам между "//" ?
|
|
24.02.2020 15:29 |
|
igrik
Posts: 2819
|
Начиная с версий 2.8.4 и выше (если не ошибаюсь) обнуление x переменых в функциях убрано.
Теперь это нужно делать вручную. Да и правильнее ручное (явное) обнуление, с моей точки зрения.
Справочник начинает устаревать, но его обновление уже готовится.
game bug fixes extended.dll || My Plugins || My GitHub
|
|
24.02.2020 15:47 |
|
Zur13
Posts: 223
|
(24.02.2020 18:20)Berserker Wrote: Zur13, сейчас сделано как в компилируемых языках. Только переданные параметры перезаписываются. Полагаться на значения по умолчанию нельзя много где (в Go разве что сделали инициализацию нулями по умолчанию). Рекомендую писать код и для y-переменных и для x-переменных, не рассчитывающий на что-либо конкретно. Добавится оптимизация какая, расчёт перестанет быть верным.
Да я уже понял, я просто на всякий случай уточнил, я в одном месте лажанул и забыл передать нулевой аргумент, и в функции проверки на максимальное значение этого аргумента не было, получался очень длинный цикл иногда, но у меня в тестах этого не вылезало. В большинстве других ЯП есть проверки на количество аргументов при вызове функций, обнуление помогает хотя бы сделать вызовы функций с меньшим количество аргументов детерминированными и избежать неопределенного и случайного поведения, не знаю с чем было связано такое решение, но мне кажется что тут вы поспешили с избавлением от обнуления явно не передаваемых аргументов
|
|
24.02.2020 22:11 |
|
Berserker
Posts: 16657
|
Zur13, Quote:В большинстве других ЯП есть проверки на количество аргументов при вызове функций
Обижаешь
Version 2.9.7
------------------------
[+] Added possibility to query function arguments count for functions, called via FU:P, FU:D, DO:P. New command !!FU:A?$ returns number of x-arguments (not including x16 for DO:P), received by function. This mechanism allows to write functions with optional parameters (parameters with default values) and functions with variadic arguments number.
А циклы уже вместо !!SN:G можно писать на !!re. Смотри Help\Era\era ii changelog.txt
; Clear current hero army
Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
|
|
24.02.2020 22:22 |
|
Zur13
Posts: 223
|
(24.02.2020 22:22)Berserker Wrote: Zur13, Quote:В большинстве других ЯП есть проверки на количество аргументов при вызове функций
Обижаешь
Version 2.9.7
------------------------
[+] Added possibility to query function arguments count for functions, called via FU:P, FU:D, DO:P. New command !!FU:A?$ returns number of x-arguments (not including x16 for DO:P), received by function. This mechanism allows to write functions with optional parameters (parameters with default values) and functions with variadic arguments number.
А циклы уже вместо !!SN:G можно писать на !!re. Смотри Help\Era\era ii changelog.txt
; Clear current hero army
Спасибо, это реально полезно. Возможно стоит помещать актуальные примеры кода не в ченжлог, а просто в отдельные текстовые файлы чтобы оно было хотя бы сгруппировано по темам как в справочнике, вроде examples_fu.txt examples_do.txt examples_general.txt вроде это не так много работы как обновление html справочника и сравнимо с обновлением ченжлога?
И еще вопрос, а область видимости имен меток какая, внутри одного триггера, файла или вообще везде?
|
|
24.02.2020 23:44 |
|