Bes
Posts: 5422
|
Berserker, можно ли получить порядковый номер определённого символа в текстовой переменной?
Я хочу вклиниваться в предложение неизвестного заранее по содержанию туда, где появится определённый символ.
Известные мне команды над текстом базируются на том, что пользователь знает номер символа в строке.
Вариант поиском циклами через посимвольное сравнение каждой позиции строки с искомым символом - это на крайний случай. Я надюсь, что есть более простой способ, неизвестный мне
|
|
02.08.2020 01:32 |
|
Berserker
Posts: 16171
|
|
02.08.2020 02:13 |
|
Bes
Posts: 5422
|
Berserker, а так надеялся что в era.dll есть встроенная ф-ция, наподобие таких вариантов 
ладно, буду писать свои первые циклы через !!re
это я сам себе тут работу поддаю, опять из-за стремления к прекрасному
P.S. а что делает FireEvent, в двух словах буквально?
|
|
02.08.2020 02:58 |
|
Berserker
Posts: 16171
|
|
02.08.2020 03:57 |
|
Bes
Posts: 5422
|
спасибо, понял.
А вот с моей затеей облом.
Я хотел искать символ ;
Так вот, ERA2.9.14, запустил чистую era в полноэкранке, словил пару странных фишек и один вылет из-за этого:
- через диалог ввода пишу
Code:
VRz1:S^1;2^;IF:M1/1
естественно, ругнулся движок, что неправильная команда, а следом и ругнулся ExecErmCmd и предложил дамп записать. Диалог вызываемый мной игра показала пустой, в лог игры сообщение не прошло (я так понял тож пустоту послало)
- иду дальше, пишу
Code:
VRz2:S^1;2^;IF:M1/1
опять ругнулись, НО в диалоге моём весь введённый код показало, вместе с двумя символами ;. В лог игры так же всё целиком прошло, без проблем
- дай думаю извращусь... пишу
Code:
VRz2:S^1;2^;IF:M^%Z1^
Ругается только ExecErmCmd и всё, дальше появляется мой диалог с рекурсией текста из z1 (естественно), но обрывается текстом "2^;IF:M^(null)1^^^^^" и это же попадает в лог игры.
Хотя если ту же рекурсию провернуть, но без ; в строке, то обрыва такого нет, просто весь диалог забит повторением текста, ошибок нет, и та же каша в лог идёт.
- Ок. думаю я, дай-ка через ассоциативную память зайду...
Code:
SN:W^test^/^;^;IF:M^%S(test)^
Вылет игры, причём окошко было в винде, так что не сразу понял почему всё не работает а окна вылета игры нет
архив
Короче, я собственно чего так завёлся - почему-то эта злополучная ; таки может отображаться в диалогах, а проблема в ограничениях самого интерполятора.
Berserker, могу я как-то таки без ошибок в процессе ЕРМ-циклов сделать поиск символа ;, и уже перед выводом в окно удалять его? мне просто не нравится что две введёные так команды идут в одной строке в логе, я хотел сделать перенос, ориентируясь по ; в z1 после диалога
|
|
02.08.2020 04:48 |
|
Berserker
Posts: 16171
|
|
02.08.2020 17:11 |
|
Bes
Posts: 5422
|
Berserker, а как я пойму о начале другой команды, кроме как используя ;  у меня больше нет вариантов
|
|
03.08.2020 00:33 |
|
daemon_n
Posts: 4272
|
Code:
[+] Added SN:H subcommand "spec" for applying custom hero specialty names.
SN:H^spec^/hero/short name (0), full name (1) or description (2)/hint
Berserker, а где посмотреть весь текст? С кодом ниже имеем лишь "hint3" на ЛКМ/ПКМ.

Новейший Heroes 3 Launcher
|
|
03.08.2020 00:43 |
|
Bes
Posts: 5422
|
daemon_n, а какой ещё есть текст у героя кроме этих трёх позиций?
|
|
03.08.2020 00:56 |
|
wessonsm
Posts: 827
|
daemon_n, это то, что в текстовике herospec.txt.
1-ю позицию можно увидеть в окне выбора стартового героя для сценария. Правда, erm-ом там название специализации не изменить.
2-я позиция кажется нигде в игре не используется.
То есть, похоже, что в скриптах есть смысл менять только описание (hint3).
|
|
03.08.2020 01:34 |
|
Bes
Posts: 5422
|
daemon_n, нет, наоборот, используется только hint1 и hint3 в игре
hint2 не используется
P.S. вот wessonsm уже это и сказал
(This post was last modified: 03.08.2020 01:43 by Bes.)
|
|
03.08.2020 01:42 |
|
Archer30
Posts: 929
|
|
03.08.2020 02:08 |
|
daemon_n
Posts: 4272
|
|
03.08.2020 02:32 |
|